Systems, devices, and methods for software coding

ABSTRACT

Provided methods and systems allow dynamic rendering of a reflexive questionnaire based on a modifiable spreadsheet for users with little to no programming experience and knowledge. Some methods comprise receiving a modifiable spreadsheet with multiple rows, each row comprising rendering instructions for a reflexive questionnaire from a first computer, such as a data type cell, statement cell, logic cell, and a field identifier; rendering a graphical user interface, on a second computer, comprising a label and an input element corresponding to the rendering instructions of a first row of the spreadsheet; receiving an input from the second computer; evaluating the input against the logic cell of the spreadsheet; in response to the input complying with the logic cell of the spreadsheet, dynamically rendering a second label and a second input element to be displayed on the graphical user interface based on the logic of the first row.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Application No. 62/890,963, filed Aug. 23, 2019, which is incorporated by references in its entirety for all purposes.

TECHNICAL FIELD

Generally, this disclosure relates to computing. More particularly, this disclosure relates to software coding.

BACKGROUND

Data intake forms (e.g., questionnaires) may provide an interactive cellular interface for data intake and processing. Online questionnaires can be locally run or network-based. The questionnaires can contain a single worksheet or a plurality of worksheets, whether related or unrelated to each other in content or form. As the processing power of computers allow for greater computer functionality and the Internet technology era allows for interconnectivity between computing systems, many institutions rely on online questionnaires to receive data from users and potential clients. However, new technical challenges have been identified. For example, conventional software solutions utilize a static method to display data intake questionnaires by rendering the questionnaires based on existing code (e.g., code stored within an internal or an external database). To combat this problem, many existing software solutions have attempted to dynamically render the questionnaires by allowing an employee to update and/or modify the corresponding code. However, this method requires the employees to be familiar with complex coding algorithms; this task has been proven difficult because most employees have little or no software programming knowledge. For example, an employee must be familiar with XML or HTML in order to modify the code and to customize the data intake questionnaire. The technical challenges become more challenging if the network page (displaying the questionnaire) should contain a set of labels and a set of fields, both of which would dynamically change in real-time, whether in content or type, based on a set of user inputs into the set of fields. The technical challenges become even more challenging if the set of labels must precisely match a preexisting content output, such as a paper document or an electronic document. The technical challenges become yet even more challenging if a file should be generated based on the set of user inputs.

Furthermore, many data intake questionnaires are associated with sensitive data, such as medical or personal data. These data intakes questionnaires may be regulated by various state and/or federal laws. For example, several federal and/or state laws require various disclaimers to be displayed based upon a potential client's responses to certain questions. Conventional online questionnaires display all the disclaimers associated with the data intake (whether relevant to the potential client's responses or not). These disclaimers are complicated, wordy, and confusing; therefore, conventional solutions create a negative user experience by “crowding” the graphical user interface provided to the potential clients. Some disclaimers are often unnecessary and not-applicable to all users. However, conventional software solutions usually include all the relevant disclaimers because modifying the code that controls the rendering of the graphical user interface is too burdensome and technically challenging. Moreover, many entities are not willing to risk allowing employees to modify the code because the employees (e.g., field agents) typically do not have proper programming experience and knowledge.

Additionally, storage of completed questionnaires in Portable Document Format (PDF) files may be inefficient since some PDF files may be difficult to work with or limited in functionality. Moreover, when serving questionnaires that involve querying various data sources for informational validation and thoroughness, then various datasets from the data sources may not be properly formatted and may include duplicates. Further, programming questionnaires may be time-consuming and laborious when various programming logic is not modular or reusable. Also, there are situations when various users of various demographic backgrounds access various websites, yet same or similar processing rules may apply to those websites. However, those websites may not be programmed to enable application of same or similar processing rules.

Moreover, there are situations when some users need a programming infrastructure that enables some minor calculation modifications of a base calculation for specific situations based on various predefined and situation specific variables, which may need to be periodically updated. However, keeping this computing infrastructure simple for users with minimal programming experience is difficult.

SUMMARY

For the aforementioned reasons, there is a need for an accurate and efficient computer-implemented system and method for dynamically generating and rendering an online data intake questionnaire, which is configured to be modified by a person with a minimal knowledge of programming. This disclosure at least partially addresses at least one of the above challenges. However, this disclosure can prove useful to other technical areas. Therefore, at least some claims should not be construed as necessarily limited to addressing any of the above challenges.

In an embodiment, a computer-implemented method comprises receiving, by a server, from a first computing device, a first file comprising a spreadsheet, wherein the spreadsheet comprises at least a first row and a second row, wherein the first row comprises a first statement cell comprising a first statement, a first data type cell comprising a first data type identifier, a first logic cell comprising a first logic, and a first field cell comprising a first field identifier, wherein the second row comprises a second statement cell comprising a second statement, a second data type cell comprising a second data type identifier, a second logic cell comprising a second logic, and a second field cell comprising a second field identifier; dynamically rendering, by the server, a graphical user interface configured to be displayed on a second computing device, wherein the graphical user interface comprises a first label and a first input element, wherein the first label comprises the first statement sourced from and corresponding to the first statement cell, wherein the first input element is configured for a first input according to the first data type identifier sourced from and corresponding to the first data type cell; in response to receiving, by the server, the first input from the second computing device: evaluating, by the server, the first input against the first logic, and in response to the first input corresponding to the first logic: dynamically rendering, by the server, a second label and a second input element to be displayed on the graphical user interface, wherein the second label comprises the second statement sourced from and corresponding to the second statement cell, and wherein the second input element is configured for a second input according to the second data type identifier sourced from and corresponding to the second data type cell; and in response to receiving, by the server, the second input: evaluating, by the server, the second input against the second logic, and in response to the second input corresponding to the second logic: generating, by the server, a second file, wherein the server inserts the first input into a first field of the second file based on the first field identifier and inserts the second input into a second field of the second file based on the second field identifier; and transmitting, by the server, the second file comprising the first input and the second input to the first computing device.

In another embodiment, a computer system comprises a server, which is configured to a server configured to: receive, from a first computing device, a first file comprising a spreadsheet, wherein the spreadsheet comprises at least a first row and a second row, wherein the first row comprises a first statement cell comprising a first statement, a first data type cell comprising a first data type identifier, a first logic cell comprising a first logic, and a first field cell comprising a first field identifier, wherein the second row comprises a second statement cell comprising a second statement, a second data type cell comprising a second data type identifier, a second logic cell comprising a second logic, and a second field cell comprising a second field identifier; dynamically render a graphical user interface configured to be displayed on a second computing device, wherein the graphical user interface comprises a first label and a first input element, wherein the first label comprises the first statement sourced from and corresponding to the first statement cell, wherein the first input element is configured for a first input according to the first data type identifier sourced from and corresponding to the first data type cell; in response to receiving the first input from the second computing device: evaluate the first input against the first logic, and in response to the first input corresponding to the first logic: dynamically render a second label and a second input element to be displayed on the graphical user interface, wherein the second label comprises the second statement sourced from and corresponding to the second statement cell, and wherein the second input element is configured for a second input according to the second data type identifier sourced from and corresponding to the second data type cell; and in response to receiving the second input: evaluate the second input against the second logic, and in response to the second input corresponding to the second logic: generate a second file, wherein the server inserts the first input into a first field of the second file based on the first field identifier and inserts the second input into a second field of the second file based on the second field identifier; and transmit the second file comprising the first input and the second input to the first computing device.

In another embodiment, a computer-implemented method comprises receiving, by a server, from a first computing device, a rendering request comprising a request to render a graphical user interface displayed on a second computing device; querying, by the server, a database to retrieve a spreadsheet associated with the graphical user interface, wherein the spreadsheet comprises at least a first row and a second row, wherein the first row comprises a first statement cell comprising a first statement, a first data type cell comprising a first data type identifier, a first logic cell comprising a first logic, and a first field cell comprising a first field identifier, wherein the second row comprises a second statement cell comprising a second statement, a second data type cell comprising a second data type identifier, a second logic cell comprising a second logic, and a second field cell comprising a second field identifier; upon retrieving the spreadsheet, dynamically rendering, by the server, the graphical user interface on the second computing device, wherein the graphical user interface comprises a first label and a first input element, wherein the first label comprises the first statement sourced from and corresponding to the first statement cell, wherein the first input element is configured for a first input according to the first data type identifier sourced from and corresponding to the first data type cell; upon displaying the first label, receiving, by the server, a first input from the second computing device; in response to receiving the first input: evaluating, by the server, the first input against the first logic, and in response to the first input corresponding to the first logic: dynamically rendering, by the server, a second label and a second input element to be displayed on the graphical user interface, wherein the second label comprises the second statement sourced from and corresponding to the second statement cell, and wherein the second input element is configured for a second input according to the second data type identifier sourced from and corresponding to the second data type cell; and in response to receiving, by the server, the second input: evaluating, by the server, the second input against the second logic.

In another embodiment, a computer system comprises a server, which is configured to: receive from a first computing device, a rendering request comprising a request to render a graphical user interface displayed on a second computing device; query a database to retrieve a spreadsheet associated with the graphical user interface, wherein the spreadsheet comprises at least a first row and a second row, wherein the first row comprises a first statement cell comprising a first statement, a first data type cell comprising a first data type identifier, a first logic cell comprising a first logic, and a first field cell comprising a first field identifier, wherein the second row comprises a second statement cell comprising a second statement, a second data type cell comprising a second data type identifier, a second logic cell comprising a second logic, and a second field cell comprising a second field identifier; upon retrieving the spreadsheet, dynamically render the graphical user interface on the second computing device, wherein the graphical user interface comprises a first label and a first input element, wherein the first label comprises the first statement sourced from and corresponding to the first statement cell, wherein the first input element is configured for a first input according to the first data type identifier sourced from and corresponding to the first data type cell; upon displaying the first label, receive a first input from the second computing device; in response to receiving the first input: evaluate the first input against the first logic, and in response to the first input corresponding to the first logic: dynamically render a second label and a second input element to be displayed on the graphical user interface, wherein the second label comprises the second statement sourced from and corresponding to the second statement cell, and wherein the second input element is configured for a second input according to the second data type identifier sourced from and corresponding to the second data type cell; and in response to receiving the second input: evaluate the second input against the second logic.

In another embodiment, a computer-implemented method comprises retrieving, by a server, a file comprising a spreadsheet, wherein the spreadsheet comprises at least a parent worksheet, wherein the parent worksheet comprises a first row, wherein the first row comprises a first statement cell comprising a first statement, a first data type cell comprising a first data type identifier, and a first logic cell comprising a first logic; in response to receiving, by the server, a rendering request from a first client computing device, generating, by the server, a child worksheet in the spreadsheet, wherein the child worksheet comprises a second row, wherein the second row inherits the first row such that the second row comprises a second statement cell corresponding to the first statement, a second data type cell corresponding to the first data type identifier, and a second logic cell corresponding to the first logic; receiving, by the server, from the first client computing device, a modification request to modify at least one of the first statement in the second statement cell, the first data type identifier in the second data type cell, and the first logic in the second logic cell, wherein the modification request comprises a modification input; modifying, by the server, at least one of the first statement in the second statement cell, the first data type identifier in the second data type cell, or the first logic in the second logic cell in the child worksheet based on the modification input; upon modifying the child worksheet, rendering, by the server, on a second client computing device, a graphical user interface corresponding to the modified child worksheet

In another embodiment, a computer system comprises a server, which is configured to retrieve a file comprising a spreadsheet, wherein the spreadsheet comprises at least a parent worksheet, wherein the parent worksheet comprises a first row, wherein the first row comprises a first statement cell comprising a first statement, a first data type cell comprising a first data type identifier, and a first logic cell comprising a first logic; in response to receiving a rendering request from a first client computing device, generate a child worksheet in the spreadsheet, wherein the child worksheet comprises a second row, wherein the second row inherits the first row such that the second row comprises a second statement cell corresponding to the first statement, a second data type cell corresponding to the first data type identifier, and a second logic cell corresponding to the first logic; receive from the first client computing device, a modification request to modify at least one of the first statement in the second statement cell, the first data type identifier in the second data type cell, and the first logic in the second logic cell, wherein the modification request comprises a modification input; modify at least one of the first statement in the second statement cell, the first data type identifier in the second data type cell, or the first logic in the second logic cell in the child worksheet based on the modification input; upon modifying the child worksheet, render on a second client computing device, a graphical user interface corresponding to the modified child worksheet.

In another embodiment, a computer-implemented method comprises displaying, by a server, a first graphical user interface to a first client, wherein the first graphical user interface comprises a check-out element configured for a check-out input related to a file and a check-in element configured for a check-in input related to the file, wherein the file comprises at least one spreadsheet, wherein the spreadsheet comprises at least one row, wherein the at least one row comprises a statement cell comprising a statement, a data type cell comprising a data type identifier, and a logic cell comprising a logic; in response to receiving, by the server, the check-out input from the first client, checking-out, by the server, the file such that the file cannot be modified by a second client until the server receives the check-in input from the first client; receiving, by the sever, from the first client, a write request associated with the checked-out file and a write input associated with the write request; modifying, by the server, at least one of the statement, the data type identifier, or the logic based on the write request and the write input from the first client; in response to receiving, by the server, the check-in input from the first client after the modification, checking-in, by the server, the file such that the file can be modified by the second client; generating, by the server, a set of rendering instructions corresponding to a second graphical user interface based on the spreadsheet such that the second graphical user interface comprises a label and an input element, wherein the label comprises the statement as modified, wherein the input element is configured for an input based on the data type identifier as modified; and transmitting, by the server, the set of rendering instructions to a computing device associated with a third client, whereby the set of rendering instructions causes the computing device associated with the third client to display the second graphical user interface.

In another embodiment, a computer system comprises a server, which is configured to display a first graphical user interface to a first client, wherein the first graphical user interface comprises a check-out element configured for a check-out input related to a file and a check-in element configured for a check-in input related to the file, wherein the file comprises at least one spreadsheet, wherein the spreadsheet comprises at least one row, wherein the at least one row comprises a statement cell comprising a statement, a data type cell comprising a data type identifier, and a logic cell comprising a logic; in response to receiving the check-out input from the first client, check-out the file such that the file cannot be modified by a second client until the server receives the check-in input from the first client; receive from the first client, a write request associated with the checked-out file and a write input associated with the write request; modify at least one of the statement, the data type identifier, or the logic based on the write request and the write input from the first client; in response to receiving the check-in input from the first client after the modification, check-in the file such that the file can be modified by the second client; generate a set of rendering instructions corresponding to a second graphical user interface based on the spreadsheet such that the second graphical user interface comprises a label and an input element, wherein the label comprises the statement as modified, wherein the input element is configured for an input based on the data type identifier as modified; and transmit the set of rendering instructions to a computing device associated with a third client, whereby the set of rendering instructions causes the computing device associated with the third client to display the second graphical user interface.

In another embodiment, a method comprising: presenting, by a server, a first user interface to a first client, wherein the first user interface is configured to receive a set of logic and a version identifier from the first client; populating, by the server, a spreadsheet with the set of logic and the version identifier; executing, by the server, the set of logic from the spreadsheet; presenting, by the server, a second user interface to a second client, wherein the second user interface contains a reflexive questionnaire with a set of questions generated based on the set of logic; storing, by the server, the set of questions such that the set of questions is associated with the version identifier; receiving, by the server, a set of answers to the set of questions from the second client; storing, by the server, the set of answers as a set of metadata; associating, by the server, the version identifier with the set of metadata; presenting, by the server, a third user interface to a third client, wherein the third user interface is configured to receive a request from the third client; receiving, by the server, the request from the third client; locating, by the server, the version identifier responsive to the request; retrieving, by the server, the set of questions based on the version identifier; retrieving, by the server, the set of metadata based on the version identifier; recreating, by the server, the reflexive questionnaire with the set of questions based on the version identifier and the set of answers based on the set of metadata responsive to the request; presenting, by the server, the reflexive questionnaire on the third user interface to the third client responsive to the request.

In another embodiment, a system comprising: a server configured to: present a first user interface to a first client, wherein the first user interface is configured to receive a set of logic and a version identifier from the first client; populate a spreadsheet with the set of logic and the version identifier; execute the set of logic from the spreadsheet; present a second user interface to a second client, wherein the second user interface contains a reflexive questionnaire with a set of questions generated based on the set of logic, store the set of questions such that the set of questions is associated with the version identifier; receive a set of answers to the set of questions from the second client; store the set of answers as a set of metadata; associate the version identifier with the set of metadata; present a third user interface to a third client, wherein the third user interface is configured to receive a request from the third client; receive the request from the third client; locate the version identifier responsive to the request; retrieve the set of questions based on the version identifier; retrieve the set of metadata based on the version identifier; recreate the reflexive questionnaire with the set of questions based on the version identifier and the set of answers based on the set of metadata responsive to the request; present the reflexive questionnaire on the third user interface to the third client responsive to the request.

In another embodiment, a method comprising: presenting, by a server, a first user interface to a first client, wherein the first user interface is configured to receive a format logic, a semantic logic, and a deduplication logic from the client; receiving, by the server, the format logic, the semantic logic, and the deduplication logic from the first client; storing, by the server, the format logic, the semantic logic, and the deduplication logic in a data structure; presenting, by the server, a second user interface to a second client, wherein the second user interface is configured to receive a set of rules from the second client; receiving, by the server, the set of rules from the second client; populating, by the server, a spreadsheet with the set of rules; executing, by the server, the set of rules from the spreadsheet; presenting, by the server, a third user interface to a third client, wherein the third user interface includes a reflexive questionnaire including a set of questions generated based on the set of rules; sending, by the server, a query to a data source as the reflexive questionnaire is presented on the third user interface, wherein the query is triggered based on the set of rules, wherein the data source is remote from the server; receiving, by the server, a result to the query from the data source; translating, by the server, the result based on the format logic, the semantic logic, and the deduplication logic from the data structure; updating, by the server, the reflexive questionnaire based on the result as translated; receiving, by the server, a set of answers to the questions from the third client based on the reflexive questionnaire as updated; storing, by the server, the set of answers in a database record; evaluating, by the server, the set of answers in the database record against a threshold; marking, by the server, the database record as satisfying the threshold based on the set of answers satisfying the threshold, otherwise, marking, by the server, the database record as not satisfying the threshold based on the set of answers not satisfying the threshold.

In another embodiment, a system comprising: a server configured to: present a first user interface to a first client, wherein the first user interface is configured to receive a format logic, a semantic logic, and a deduplication logic from the client; receive the format logic, the semantic logic, and the deduplication logic from the first client; store the format logic, the semantic logic, and the deduplication logic into a data structure; present a second user interface to a second client, wherein the second user interface is configured to receive a set of rules from the second client; receive the set of rules from the second client; populate a spreadsheet with the set of rules; execute the set of rules from the spreadsheet; present a third user interface to a third client, wherein the third user interface includes a reflexive questionnaire including a set of questions generated based on the set of rules; send a query to a data source as the reflexive questionnaire is presented on the third user interface, wherein the query is triggered based on the set of rules, wherein the data source is remote from the server; receive a result to the query from the data source; translate the result based on the format logic, the semantic logic, and the deduplication logic from the data structure; update the reflexive questionnaire based on the result as translated; receive a set of answers to the questions from the third client based on the reflexive questionnaire as updated; store the set of answers in a database record; evaluate the set of answers in the database record against a threshold; mark the database record as satisfying the threshold based on the set of answers satisfying the threshold, otherwise, marking, by the server, the database record as not satisfying the threshold based on the set of answers not satisfying the threshold.

In another embodiment, a method comprising: presenting, by a server, a first spreadsheet to a first client; populating, by the server, the first spreadsheet with a first set of logic received from the first client; assigning, by the server, a name to the first spreadsheet containing the first set of logic; enabling, by the server, the name to be shared with a second client; populating, by the server, a second spreadsheet with a second set of logic received from the second client, wherein the second set of logic contains the name; executing, by the server, the second set of logic from the second spreadsheet such that the first set of logic is called based on the name and executed based on the name; presenting, by the server, a user interface to a third client, wherein the user interface contains a reflexive questionnaire including a set of questions generated based on the second set of logic inclusive of calling the first set of logic; receiving, by the server, a set of answers to the set of questions from the third client; storing, by the server, the set of answers in a database record; evaluating, by the server, the set of answers in the database record against a threshold; marking, by the server, the database record as satisfying the threshold or not satisfying the threshold based on the set of answers satisfying the threshold or not satisfying the threshold respectively.

In another embodiment, a system comprising: a server configured to: present a first spreadsheet to a first client; populate the first spreadsheet with a first set of logic received from the first client; assign a name to the first spreadsheet containing the first set of logic; enable the name to be shared with a second client; populate a second spreadsheet with a second set of logic received from the second client, wherein the second set of logic contains the name; execute the second set of logic from the second spreadsheet such that the first set of logic is called based on the name and executed based on the name; present a user interface to a third client, wherein the user interface contains a reflexive questionnaire including a set of questions generated based on the second set of logic inclusive of calling the first set of logic; receive a set of answers to the set of questions from the third client; store the set of answers in a database record; evaluate the set of answers in the database record against a threshold; mark the database record as satisfying the threshold or not satisfying the threshold based on the set of answers satisfying the threshold or not satisfying the threshold respectively.

In another embodiment, a method comprising: presenting, by a server, a spreadsheet to a client, wherein the spreadsheet is configured to receive a plurality of logic rules for a plurality of web pages associated with a plurality of domain names, wherein the domain names are different from each other; receiving, by the server, the logic rules from the client; populating, by the server, the spreadsheet with the logic rules; executing, by the server, the logic rules from the spreadsheet; presenting, by the server, a plurality of reflexive questionnaires on the web pages associated with the domain names as the web pages are accessed by a plurality of browsers, wherein the reflexive questionnaires include a plurality of questions generated based on the logic rules; receiving, by the server, a plurality of answers to the questions from the browsers; storing, by the server, the answers in a plurality of database records; evaluating, by the server, the answers in the database records against a threshold; marking, by the server, the database records as satisfying the threshold or not satisfying the threshold based on the answers satisfying the threshold or not satisfying the threshold respectively.

In another embodiment, a system comprising: a server configured to: present a spreadsheet to a client, wherein the spreadsheet is configured to receive a plurality of logic rules for a plurality of web pages associated with a plurality of domain names, wherein the domain names are different from each other; receive the logic rules from the client; populate the spreadsheet with the logic rules; execute the logic rules from the spreadsheet; present a plurality of reflexive questionnaires on the web pages associated with the domain names as the web pages are accessed by a plurality of browsers, wherein the reflexive questionnaires include a plurality of questions generated based on the logic rules; receive a plurality of answers to the questions from the browsers; store the answers in a plurality of database records; evaluate the answers in the database records against a threshold; mark the database records as satisfying the threshold or not satisfying the threshold based on the answers satisfying the threshold or not satisfying the threshold respectively.

In another embodiment, a method comprising: assigning, by a server, a first document identifier and a first version identifier to a first worksheet, wherein the first worksheet includes a plurality of first keys and a plurality of first logic statements, wherein the first keys one-to-one correspond to the first logic statements, wherein the first keys include a first key, wherein the first logic statements include a first logic statement; assigning, by the server, a second document identifier and a second version identifier to a second worksheet, wherein the second worksheet includes a second key and a second logic statement, wherein the second key one-to-one corresponds to the second logic statement, wherein the first key and the second key are semantically identical to each other, wherein the first logic statement and the second logic statement are semantically different from each other; linking, by the server, the second worksheet to the first worksheet based on the second document identifier, the second version identifier, the first document identifier, and the first version identifier; receiving, by the server, a request from a client after the second worksheet is linked to the first worksheet, wherein the request includes the second document identifier and the second version identifier; accessing, by the server, the first worksheet and the second worksheet based on the second document identifier, the second version identifier, the first document identifier, and the first version identifier responsive to the request; executing, by the server, the first logic statements based on the first keys, wherein the execution includes calling the second key instead of the first key such that the second logic statement overrides the first logic statement based on the second key and the first key being semantically identical to each other; generating, by the server, an output based on the execution; sending, by the server, the output to the client responsive to the request.

In another embodiment, a system comprising: a server programmed to: assign a first document identifier and a first version identifier to a first worksheet, wherein the first worksheet includes a plurality of first keys and a plurality of first logic statements, wherein the first keys one-to-one correspond to the first logic statements, wherein the first keys include a first key, wherein the first logic statements include a first logic statement; assign a second document identifier and a second version identifier to a second worksheet, wherein the second worksheet includes a second key and a second logic statement, wherein the second key one-to-one corresponds to the second logic statement, wherein the first key and the second key are semantically identical to each other, wherein the first logic statement and the second logic statement are semantically different from each other; link the second worksheet to the first worksheet based on the second document identifier, the second version identifier, the first document identifier, and the first version identifier; receive a request from a client after the second worksheet is linked to the first worksheet, wherein the request includes the second document identifier and the second version identifier; access the first worksheet and the second worksheet based on the second document identifier, the second version identifier, the first document identifier, and the first version identifier responsive to the request; execute the first logic statements based on the first keys, wherein the execution includes calling the second key instead of the first key such that the second logic statement overrides the first logic statement based on the second key and the first key being semantically identical to each other; generate an output based on the execution; send the output to the client responsive to the request.

Additional features and advantages of various embodiments are set forth in a detailed description that follows. Various objectives and other advantages of this disclosure are realized and attained by various structures particularly pointed out in various exemplary embodiments in the detailed description and claims hereof as well as in a set of appended drawings. Note that the detailed description is exemplary and explanatory and is intended to provide further explanation of this disclosure as claimed.

DESCRIPTION OF DRAWINGS

The accompanying drawings constitute a part of this specification and illustrate an embodiment of the present disclosure and together with the specification, explain the present disclosure.

FIG. 1 shows a schematic view of an embodiment of a network topology.

FIG. 2 shows a flowchart of an embodiment of a process for file generation.

FIG. 3 shows a flowchart of an embodiment of a process for cell processing.

FIG. 4 shows a flowchart of an embodiment of a process for inheritance based data structure generation.

FIG. 5 shows a flowchart of an embodiment of a first process for document management.

FIG. 6 shows a flowchart of an embodiment of a second process for document management.

FIGS. 7A-B show a screenshot of an embodiment of a spreadsheet containing a parent worksheet being active for data input as selected via a parent worksheet tab and a child worksheet being inactive for data input as not selected via a child worksheet tab.

FIG. 7C shows a screenshot of an embodiment of a network page dynamically generated based on a parent worksheets of FIGS. 7A-B.

FIG. 8A shows a screenshot of an embodiment of a spreadsheet containing a parent worksheet being inactive for data input as not selected via a parent worksheet tab and a child worksheet being active for data input as selected via a child worksheet tab.

FIG. 8B shows a screenshot of an embodiment of a network page dynamically generated based on a parent worksheet of FIG. 8A.

FIG. 9 shows a screenshot of an embodiment of a single network page generated based on a spreadsheet.

FIGS. 10A-10B show an embodiment of a table of reflexive questions and rules, where the reflexive questions appear in a dynamically adjusted network page based on the rules, where the rules determine when a question will or will not be asked.

FIG. 11 shows a flowchart of an embodiment of a process of reconstructing a reflexive questionnaire based on a set of metadata.

FIG. 12 shows a flowchart of an embodiment of a process of querying a data source during a presentation of a reflexive questionnaire with a set of questions generated based on a logic contained with a spreadsheet.

FIG. 13 shows a flowchart of an embodiment of a process of modularizing logic statements in a spreadsheet.

FIG. 14 shows a flowchart of an embodiment of a method for presenting a plurality of reflexive questionnaires on a plurality of web pages having a plurality of domain names assigned thereto.

FIG. 15 shows a flowchart of an embodiment of a method for outputting a value based on a plurality of worksheets.

FIGS. 16A-16D show a plurality of embodiments of a plurality of screenshots of a plurality of worksheets.

DETAILED DESCRIPTION

This disclosure more fully references to the accompanying drawings, in which various embodiments of this disclosure are shown. This disclosure may, however, be embodied in many different forms and should not be construed as necessarily being limited to the embodiments disclosed herein. Rather, these embodiments are provided so that the present disclosure is thorough and complete, and fully conveys the concepts of the present disclosure to those skilled in the relevant art.

As described herein, various disclosed technologies can be implemented via a plurality of computers (servers/clients) utilizing a plurality of data structures/messages. Such implementations include data structure/message generation/formation, storage, retrieval, population, copying, moving, editing, modifying, sorting, searching, sending, receiving, updating, deleting, encrypting, decrypting, de-duplicating, converting, uploading, downloading, or any other local or network-based data structure/message operation associated with a structure/message (data shell) or the data itself (content). For example, the structure/message (shell) can comprise a file, a table, a spreadsheet, an array, a matrix, a linked list, a tree, a string, a quadtree, a stack, a deck, or any other structures of data. For example, a spreadsheet can be stored within a file. The data (content) can contain any alphanumeric, image, acoustic, binary, symbolic, equation, formula, or any other content. For example, a spreadsheet can comprise the data (content). Also, note that various disclosed algorithms are some non-limiting examples and other variations are possible.

FIG. 1 shows a schematic view of an embodiment of a network topology according to the present disclosure. A topology 100 comprises a wide area network (WAN) 102 to which a plurality of equipment segments are coupled, whether directly or indirectly, whether in a wired or wireless manner. The segments include a first segment and a second segment.

The first segment is operated via a first operator and the second segment is operated via a second operator. The first segment comprises a router 104, a firewall 106, a network server 108, a firewall 110, an application server 112, a database server 114, a local area network (LAN) 116, a workstation 118, an administrator terminal 120, and a multifunction device 122.

The second segment comprises a client computing device 124 communicably coupled to the WAN 102, whether directly or indirectly, whether in a wired or a wireless manner. The client computing device 124 is operated by an end user, such as a potential or an actual service provider customer. In some embodiments, the first operator and the second operator are a single operator, such as for testing or maintenance of at least one of the first segment or the second segment.

The topology 100 is based on a distributed network operation model, which allocates tasks/workloads between servers, which provide a resource/service, and clients, which request the resource/service. Although the servers and the clients illustrate different computers/applications, in some embodiments, the servers and the clients reside in or share or are one system/application. Further, the topology 100 entails allocating a large number of resources to a small number of servers, where complexity of the clients, depends on how much computation is offloaded to the small number of servers, i.e., more computation offloaded from the clients onto the servers leads to lighter clients, such as being more reliant on network sources and less reliant on local computing resources. However, note that other computing models are possible as well. For example, such models can comprise decentralized computing, such as peer-to-peer (P2P), for instance Bit-Torrent, or distributed computing, such as via a computer cluster where a set of networked computers works together such that the computer can be viewed as a single system. For example, a communication may comprise sending a request to open a network port for access or a browsing request or a packet request or a page request or a file request or a record request.

Each component of the topology 100 can be implemented in a logic, whether hardware-based or software-based. For example, when the logic is hardware-based, then such logic can comprise circuitry, such as processors, memory, input devices, output devices, or other hardware, that is configured, such as via programming or design, to implement a functionality of a respective component. Likewise, when the logic is software-based, then such logic can comprise one or more instructions, such as assembly code, machine code, object code, source code, or any other type of instructions, which when executed, such as via running or compilation, implement a functionality of a respective component.

The WAN 102 is communicably interposed between the first segment and the second segment. The WAN 102 can be operated via the first operator, the second operator, or a third operator. The WAN 102 can be established via a telecommunication circuit. The WAN 102 can employ circuit switching or packet switching methods. The WAN 102 can employ network protocols including Transmission Control Protocol (TCP)/Internet Protocol (IP), which can be used deliver transport and addressing functions. However, other communication protocols can be used, whether additionally or alternatively, in whole or in part, such as File Transfer Protocol (FTP), Ethernet, Internet Message Access Protocol (IMAP) Internet Control Message Protocol (ICMP), Hypertext Transfer Protocol (HTTP), or others. The WAN 102 can comprise circuit switched telephone lines, radio wave transmission, or optic fiber. In some embodiments, the first segment and the second segment communicably interface with each other, while avoiding the WAN 102, such via direct communication, such as via the router 104.

Although the first segment is organized in a dual firewall configuration, the first segment can also be organized in a single firewall configuration, such as a three legged network model. The router 104 is communicably interposed between the WAN 102 and the firewall 106. The firewall 106 is communicably interposed between the router 104 and the network server 108. The network server 108 is communicably interposed between the firewall 106 and the firewall 110. For example, a demilitarized zone or a perimeter network can be formed, where the network server 108 is positioned therein. The firewall 110 is communicably interposed between the application server 112 and the network server 108. The firewall 110 is communicably interposed between the LAN 116 and the network server 108. The application server 112 is communicably interposed between the firewall 110 and the database server 114. The LAN 116 is communicably coupled to the firewall 110, the workstation 118, the administrator terminal 120, and the multifunction device 122. Note that communicative interpositioning or communicative coupling can be direct or indirect, whether wired or wireless. For example, the network server 108, the application server 112, and the server 112 can be contained in a single data center or distributed among a plurality of data centers in any permutational/combinatory manner.

The router 104 forwards data packets from the WAN 102 to the firewalls 106 and vice versa. Each of the firewalls 106, 110 is a network security system, whether hardware and/or software, which monitors and controls incoming and outgoing network traffic based on a set of security rules. Each of the firewalls 106, 110 can be a network firewall or a host-based firewall. Each of the firewalls 106, 110 can be identical or different from each other in structure or operation.

The network server 108 serves content, such as a network page, a data stream, or a data feed. For example, the network server 108 can serve content to the application server 112 in response receiving a corresponding request. For example, the network server 108 can push to or pull content from the application server 112. The network server 108 can serve content, such as a network page, such as via pushing or pulling, to the workstation 118, the administrator terminal 120, and the multifunction device 122 over the LAN 116 in response receiving a corresponding request. Such service can be via a protocol, such as via HTTP or a hypertext transfer protocol secure (HTTPS). For example, the network page can be file-based and can be static or dynamic. For example, the network page can be dynamically generated and can be markup language based, such as via a Hypertext Transfer Markup Language (HTML). For example, the network server 108 can comprises a web server, such as Apache, Microsoft® Internet Information Server (IIS), Novell's NetWare server, Google Web Server (GWS), or IBM Domino server.

The application server 112 hosts a software application and a set of business logic for the software application, such as a file comprising a spreadsheet or a worksheet. Therefore, as instructed by the software application, the application server 112 can communicably interface with the network server 108 through the firewall 110 and the database server 114. For example, the application server 112 can act as a middle-tier server, with the network server 108 acting as front-tier server, and the database server 114 acting as a back-end server. For example, the application server 112 can comprise an IBM Web Sphere application server or a SAP Web application server. In some embodiments, where the firewall 110 is lacking, then the application server 112 can still communicably interface with the network server 108, which may be directly.

The application server 112 can comprise a plurality of independent cores, such as a multicore processor comprising a computing component with two or more independent processing units, which are the units that read and execute program instructions, such as via multiprocessing or multithreading. The instructions are processing instructions, such as add, move data, or branch, but the cores can run multiple instructions concurrently, thereby increasing an overall operational speed for the software application, which is amenable to parallel computing. The cores can process in parallel when concurrently accessing a file or any other data structure, as disclosed herein, while being compliant with atomicity, consistency, isolation, and durability (ACID) principles, which ensure that such data structure operations/transactions, such as read, write, erase, or others, are processed reliably, such as for data security or data integrity. For example, a data structure can be accessed, such as read or written, via at least two cores concurrently, where each of the cores concurrently processes a distinct data structure record or a distinct set of data such that at least two data structure records or at least two sets of the data are processed concurrently, without locking the data structure between such cores. However, note that data locking is possible. Note that there can be at least two cores, such as two cores, three cores, four cores, six cores, eight cores, ten cores, twelve cores, or more. The cores may or may not share caches, and the cores may or may not implement message passing or shared-memory inter-core communication methods. Common network topologies to interconnect cores include bus, ring, two-dimensional mesh, and crossbar. Homogeneous multi-core systems include only identical cores, heterogeneous multi-core systems can have cores that are not identical. The cores in multi-core systems may implement architectures, such as very long instruction word (VLIW), superscalar, vector, or multithreading. In some embodiments, whether additionally or alternatively, in whole or in part, at least one of the network server 108, the database server 114, the workstation 118, the terminal 120, or the client 138 can comprise a plurality of independent cores, such as a multicore processor comprising a computing component with two or more independent processing units, which are the units that read and execute program instructions, such as via multiprocessing or multithreading, as disclosed herein. Such configurations may enable parallel processing of relevant information, as disclosed herein, such as when used via many users for various tasks disclosed herein and thereby efficiently increase system computational speed.

The database server 114 hosts a database and a database management system (DBMS), such as an Oracle database, a MS-SQL database, an MS Access database, a Filemaker database, a DB2 database, or others. The DBMS manages the database. The application hosted on the application server 112 can communicably interface with the DBMS in order to request various database operations, as disclosed herein, such as creating records, modifying records, retrieving records, searching records, identifying records, deleting records, sorting records, or others, in whole or in part. For example, some of various database input (I)/output (O) operations include reading, writing, editing, deleting, updating, searching, selecting, merging, sorting, erasing, formatting, or others. The DBMS can implement record locking on the database, such as for data integrity purposes. In some embodiments, the DBMS can avoid record locking.

The database stores data, whether in a raw state, a formatted state, an organized stated, or any other accessible state, and allows access to such data, whether directly and/or indirectly. The database can be a single database or a plurality of databases, whether hosted on a single machine or a plurality of machines, whether in a single data center or distributed among a plurality of data centers. The database can comprise at least one of a relational database, a non-relational database, a post-relational database, an in-memory database, a hybrid database, an Extensible Markup Language (XML) database, a parallel database, a distributed database, a graph database, a mobile database, an operation database, a probabilistic database, a real-time database, a spatial database, a temporal database, an object oriented database, an unstructured data database, a terminology oriented database, or others. For example, the database can store a spreadsheet with a parent worksheet and a child worksheet, as disclosed herein.

The workstation 118 is programmed to run an application on an operating system (OS), such as Windows, Linux, Android, MacOS, and/or others. For example, the application can comprise a browser, a productivity application, such as a word processor or a spreadsheet, a mobile app, or others. The application is programmed to display a graphical user interface (GUI), as disclosed herein. The GUI is programmed to display an output and receive an input. For example, the output can comprise a display of a row of a parent worksheet populated, as disclosed herein, via an input device, such as a keyboard, a cursor device, a microphone, a camera, or a touchscreen, and a display of a tab of a child worksheet programmed for an activation via the input device, where the child worksheet is programmed for the input, such as to automatically and at least partially inherit a cellular format or cellular content from the parent worksheet for subsequent editing/modification/appending, if any, where, after the input, the parent worksheet or the child worksheet, in whole or in part, can be saved, submitted, or uploaded from the workstation 118 to the application server 112 or the database server 114, which may be through the network server 108 via the LAN 116 or directly to the application server 112 via the LAN 116. The input may be from a user, such as a service provider employee or another computer/software application. However, note that the GUI can receive and display other information as well, as disclosed herein. The workstation 118 can be configured to interface with the multifunction device 122, such as to print a report from the application via the multifunction device 122, such as in color or grayscale, such as via the LAN 116. The workstation 118 can communicate the input to the application server 112 via the LAN 116 and the firewall 110 or even without the firewall 110. In response, the application server 112 can perform various data operations, as disclosed herein, such as to execute the software application and the set of business logic for the software application accordingly or request the DBMS to identify or modify various records in the database hosted on the database server 114.

The administrator terminal 120 is programmed to allow maintenance or troubleshooting of the first segment, such as the router 104, the firewall 106, the network server 108, the firewall 110, the application server 112, the database server 114, the LAN 116, the workstation 118, and the multifunction device 122. Such maintenance or troubleshooting can involve spreadsheet or file settings, spreadsheet or file versioning, data structure maintenance, software updates, debugging, access control, simulation, event logging, event monitoring, automation, or others. In some embodiments, the maintenance or the troubleshooting can involve the second segment or the client computing device 124.

The multifunction device 122 can comprise a scanner, a fax, a printer, a network-based messaging interface, whether LAN or WAN based, such as email, or any other functionality, in whole or in part, in any combinatory manner. The multifunction device 122 can be used via the workstation 118, the administrator terminal 120, the application server 112, or other components of the first segment. The multifunction device 122 can host an optical character recognition (OCR) engine to perform an OCR process, such as offline, on a scan, a fax, an email, or other functionalities of the multifunction device 122. Alternatively or additionally, the OCR process can be performed remote to the multifunction device 122, where the multifunction device 122 sends a document or an image, whether as scanned, faxed, or emailed, to a remote computer and then receives the document or the image that has already been subject to the OCR process from the remote computer, whether the remote computer performs the OCR process or forward the document or the image to another machine to perform the OCR process. For example, the spreadsheet can be populated, as disclosed herein, in a paper form and submitted for the OCR process via the multifunction device 122, as disclosed herein. The client computing device 124 comprises a tablet computer. However, note that the client computing device 124 can be any type of a computer, such as a desktop, a laptop, a mobile device, a phone, or any other suitable computer.

Note that any of the servers disclosed herein can be hardware-based and/or software-based. Each of the servers is and/or is hosted on, whether directly and/or indirectly, a server computer, whether stationary or mobile, such as a kiosk, a workstation, a vehicle, whether land, marine, or aerial, a desktop, a laptop, a tablet, a mobile phone, a mainframe, a supercomputer, a server farm, and so forth. The server computer can comprise another computer system and/or a cloud computing network. The server computer can run any type of an OS, such as MacOS, Windows, Android, UNIX, Linux, and/or others. The server computer can include and/or be coupled to, whether directly and/or indirectly, an input device, such as a mouse, a keyboard, a touchscreen, a biometric reader, a clicker, a microphone, or any other suitable input device. The server computer can include and/or be coupled to, whether directly and/or indirectly, an output device, such as a display, a speaker, a printer, or any other suitable output device. In some embodiments, the input device and the output device can be embodied in one unit, such as a touch-enabled display, which can be haptic. Each of the servers can employ load-balancing technologies and/or failover technologies for operational efficiency, continuity, and/or redundancy. Each of the servers can be task-dedicated. At least two of the servers can be a single server.

Note that the clients disclosed herein can be hardware-based and/or software-based. Each of the clients is and/or is hosted on, whether directly and/or indirectly, a client computer, whether stationary or mobile, such as a terminal, a kiosk, a workstation, a vehicle, whether land, marine, or aerial, a desktop, a laptop, a tablet, a mobile phone, a mainframe, a supercomputer, a server farm, and so forth. The client computer can comprise another computer system and/or cloud computing network. The client computer can run any type of an OS, such as MacOS, Windows, Android, UNIX, Linux, and/or others. The client computer can include and/or be coupled to an input device, such as a mouse, a keyboard, a camera, an accelerometer, a touchscreen, a biometric reader, a clicker, a microphone, or any other suitable input device. The client computer can include and/or be coupled to an output device, such as a display, a speaker, a joystick, a printer, or any other suitable output device. In some embodiments, the input device and the output device can be embodied in one unit, such as a touch-enabled display, which can be haptic.

In one mode of operation, at least based on above, the server 112 can perform a method, which includes a set of steps. One step includes the server 112 storing a first file comprising a spreadsheet with a worksheet, where the worksheet comprises at least a first row and a second row.

The first row comprises a first statement cell comprising a first statement, a first data type cell comprising a first data type identifier, a first logic cell comprising a first logic, and a first field cell comprising a first field identifier, whether immediately adjacent to or spaced apart from each other via a cell, whether empty or containing a content, in the first row. Note that the first row can include other cells, such as a first key cell comprising a first key, whether immediately adjacent to or spaced apart from each other via a cell, whether empty or containing a content, in the first row.

The second row comprises a second statement cell comprising a second statement, a second data type cell comprising a second data type identifier, a second logic cell comprising a second logic, and a second field cell comprising a second field identifier, whether immediately adjacent to or spaced apart from each other via a cell, whether empty or containing a content, in the second row. Note that the second row can include other cells, such as a second key cell comprising a second key, whether immediately adjacent to or spaced apart from each other via a cell, whether empty or containing a content, in the second row. Note that at least one of the first row or the second row can comprise a key cell containing a key, such as a unique or primary identifier, where at least one of the first statement or the second statement is identified via the key, such as via calling the unique or primary identifier. For example, when the second row comprises the key cell, then the server 112 can call the key based on the first logic in response to the evaluating and then the second statement is identified via the key. Also, note that a cell in the first row and a cell in the second row can be shaped or sized identical to or different from each other. Note that the first row and the second row can be immediately adjacent to each other or spaced apart from each other via a row in-between. Note that the file can be a single file or a plurality of files. Also, note that other data structures can be used, whether additionally or alternative to the file. Further, note that any number of rows in a worksheet of a spreadsheet can be used. In some embodiments, the worksheet can comprise between 1 and 10,000 rows, such as between 2 and 5,000 rows, such as less than 4,000 rows. Note that this number is illustrative and more than 10,000 rows can be used, for example, 1,000,000 rows.

Note that a cell operates as a shell for the content stored therein. Therefore, an operation involving the cell or the content stored therein may include generation/formation, storage, retrieval, population, copying, moving, editing, modifying, sorting, searching, sending, receiving, updating, deleting, encrypting, decrypting, de-duplicating, converting, uploading, downloading, or any other local or network-based data cell operation. The content can contain any alphanumeric, image, acoustic, binary, symbolic, equation, formula, logic, or any other content. For example, alphanumeric data can include an alphabetic string, such as a statement or a question, whether or not including a punctuation mark of any type. For example, the alphanumeric data may include a numerical string, including a mathematical symbol of any type. For example, symbol data can include a barcode or a quick response (QR) code. For example, the logic data can include a conditional/Boolean logic statement (if/then logic evaluating whether a statement is true or false) of any branching depth, or any other type logic. For example, the first or second statement can include an alphabetic string representative of a question, such as “Are you currently licensed to fly an aircraft?” For example, the first or second data type identifier can include a Boolean type, a multi-value type, a string, a number, or others. For example, the first or second logic can include an alphanumeric string, such as “If QB00001 !=QB00101”. For example, the first or second logic can include a causal conditional string, such as “if q10==true, then ask q16” or “if Q359!=false, then ask q3, otherwise ask q458”. The causal condition string may help data entry for users with little or minimum programming knowledge. For example, the first or second field identifier can include an alphanumeric string, such as C6 or 6×. For example, the first or second key can include an alphanumeric string, such as “B00010”.

One step includes the server 112 serving, such as dynamically rendering, a page, such as a webpage, to a client, such as the client computing device 124, such as via the server 108 over the WAN 102. Such service can be based on the client requesting the page from the server 108. For example, upon receiving the page request from the client computing device 124, such service can comprise the server generating and then sending a set of executable instructions, such as markup language code, such as HTML or XML, to the client for execution, such as locally, to present the page, such as via a browser running on the OS of the client. Such service can comprise the server generating and then sending the page to the client for presentation, such as locally, such as via a browser running on the OS of the client or non-browser app running on the OS, such as a mobile non-browser app. Such service can comprise an authenticated session between the server 112 and the client, such as for security purposes. The authenticated communication session can be via HTTPS protocol. The authenticated communication session can be via login/password or biometrics.

The page visually presents, as dynamically generated, a first label and a first input element, such as a text entry box, a checkbox, a slider, a button, a dropdown menu, a sliding scale, or another other visual element. The first label comprises the first statement, such as an alphabetic string, sourced from the first statement cell based on dynamic page generation, such as via the first key. The first input element is configured for a first input, such as via a radio or option button or a dropdown menu, according to the first data type identifier sourced from the first data type cell based on dynamic page generation. The server 112 seeks, calls, or identifies the first statement in the first row, such as via the first key, such as when via a default key or as identified or pointed to via another key. Upon such seeking, calling, or identifying, the server 112 copies the first statement for dynamic page generation, such as via the server 112 or the server 108 as instructed via the server 112.

One step includes the server 112 receiving the first input from the client, such as over the WAN 102 via the server 108, and in response to such receipt, evaluating the first input against the first logic, such as if the first input matches a condition disclosed via the first logic, and serving, such as over the WAN 102 via the server 108, a second label and a second input element onto the page based such evaluation. The second label comprises the second statement sourced from the second statement cell based on dynamic page generation, such as via a second key. The second input element is configured for a second input according to the second data type identifier sourced from the second data type cell based on dynamic page generation. The server 112, upon evaluating the first input against the first logic, seeks, calls, or identifies the second statement in the second row, such as via the second key, such as when the first logic identifies or points to the second key. Upon such seeking, calling, or identifying, the server 112 copies the second statement for dynamic page generation, such as via the server 112 or the server 108 as instructed via the server 112. The page can be a single page, such that the page concurrently contains the first label, the second label, the first input element, and the second input element. For example, the single page can concurrently present the first label, the second label, the first input element, and the second input element along a horizontal scrolling plane, a vertical scrolling plane, or a diagonal scrolling plane. The page can be a plurality of pages, such that a first page contains the first label and the first input element, and a second page contains the second label and the second input element, with the first page and the second page being distinct pages, and the second page sequentially follows the first page. The first or second input can be of any data type, such an alphanumeric string, a Boolean value (true or false), a symbol, or others.

One step includes the server 112 receiving the second input, such as over the WAN 102, and in response insert the first input into a first field, such as an alphanumeric text entry field, of a second file, such as a productivity document file, such as an MS Word or Excel file, or a PDF document or a markup language file, such as an HTML file, based on the first field identifier, which identifies the first field in the second file, and the second input into a second field, such as a data entry field, such as a checkbox, of the second file based on the second field identifier, which identifies the second field in the second file. The server 112 can store the second file before the inserting or retrieve the second file via the DBMS hosted on the server 114 from the database hosted on the server 114. In addition, the server 112 can generate the second file before the inserting, whether immediately before or not immediately before. In addition, the second file may be an original file or a copy of another file, whether the copy is generated via the server 112 or the server 114. Additionally, the server 112 or the server 114 can generate the second file in response, whether immediate or not, to receiving the second input. Moreover, the second file can comprise a unique identifier before the inserting. For example, the unique identifier can be a barcode, a QR code, an alphanumeric string, or an image. For example, the server 112 or the server 114 can generate, retrieve, copy, or otherwise access the second file based on the unique identifier. In addition, if the page contains an alphanumeric or image content, such as graphical content, then the server 112 or the server 114 can be configured to filter out or avoid including such content in the second file when generating the second file, such as for a streamlined appearance when the second file is presented, displayed, or printed. In some embodiments, the server 112 or the server 114 may serve the second file to the client, such as the client computing device 124, where the second file comprises an electronic signature field that is ready to receive an electronic signature from the client. For example, such electronic signature may be useful for a network-based intake of a mortgage or insurance application, the first statement, and the second statements must match word-for-word what has been previously submitted to a government agency, such as electronically. For example, where the first statement and the second statement are literally recited in a third file in a first order, such as when previously submitted, the third file is generated before the second file and before the page is served with the first label and the first input element. The page may display the first statement and the second statement in a second order, where the first order and the second order are different orders, although identical orders are possible as well. The second file can be generated upon receiving a submit input, such as via an activation of a button or hyperlink on the page, or without receiving a submit input, such as upon reaching a threshold data point in the worksheet, such as a specific statement cell or logic cell. For example, the button can dynamically change from inactive or invisible to active or visible based on spreadsheet, such as upon reaching a threshold data point in the worksheet, such as a specific statement cell or logic cell. For example, the page can comprise a webpage with a dynamically updated form, including labels and fields. The page can contain a submission visual element, such as a button, programmed to activate an upload of the first input or the second input from the client to the application server 112, such as for storage in a record of the server 114, where the record can be subsequently accessed, such as via the DBMS as requested via the server 112, for generating the second file.

In other embodiments, the page can be a single page or the page comprises a first page and a second page, where the first page comprises the first label and the first input element, wherein the second page comprises the second label and the second input element, wherein the first page and the second page are distinct pages, such as a sequence of pages. The first row and the second row are not immediately adjacent to each other, although immediately adjacent positioning is possible, as well.

In some embodiments, the spreadsheet may comprise a cell comprising a content for at least one of (a) a control of how at least one of the first input element or the second input element is presented on the page, (b) a control of how at least one of the first label or the second label is presented on the page, (c) a control of how a help tip is presented for at least one of the first input element or the second input element is presented on the page, or (d) a control of a display attribute of the page. Such cell may be included in the first row or the second row or a third row, whether on a same or different worksheet. For example, the control of how at least one of the first input element or the second input element is presented on the page may control a lateral or longitudinal length, a color, a contrast, a position, a font, a shape, a size, or other relevant attribute. For example, the control of how at least one of the first label or the second label is presented on the page may control a lateral or longitudinal length, a color, a contrast, a position, a font, a shape, a size, or other relevant attribute. For example, the control of how the help tip is presented for at least one of the first input element or the second input element is presented on the page may control a lateral or longitudinal length, a color, a contrast, a position, a font, a shape, a size, or other relevant attribute. The help tip may be sourced from the spreadsheet, such as in the first row or the second row. Further, note that the help tip may be sourced similarly to the first statement or the second statement. For example, the control of the display attribute of the page may control a lateral or longitudinal length, a color, a contrast, a position, a font, a shape, a size, or other relevant attribute.

In some embodiments, the spreadsheet comprises a first worksheet and a second worksheet, where the first worksheet comprises the first row and the second worksheet comprises a second row. The first worksheet and the second worksheet can be a single worksheet or distinct worksheets. For example, where the page may be a first page, and the server 112 may receive a create worksheet request from the workstation 118 and in response create a third worksheet in the spreadsheet such that the third worksheet comprises a third row. The first page and the second page may be distinct pages. The third row may inherit from at least one of the first row or the second row such that the third row comprises at least one of a third statement cell comprising at least one of the first statement or the second statement, a third data type cell comprising at least one of the first data type identifier or the second data type identifier, a third logic cell comprising at least one of the first logic or the second logic, or a third field cell comprising at least one of the first field identifier or the second field identifier. The single worksheet, which may contain the first worksheet and the second worksheet, and the third worksheet may be distinct worksheets.

Note that such inheritance, whether single, multiple, or multilevel, is similar to inheritance in object-oriented programming, where a child object inherits a property/attribute/feature from a parent object. Likewise, a child worksheet can be based on another worksheet (parent worksheet), whether in a same or different spreadsheet or file or database or record or data structure, whether sourced locally or through a network, using a same implementation or specifying implementation to maintain a same behavior (realizing an interface or inheriting behavior). Such type of inheritance is a mechanism for code reuse and to allow independent extensions of an original worksheet or spreadsheet. For example, such relationships give rise to a worksheet hierarchy. For example, a child worksheet can inherit a row from a parent worksheet, such as responsive to a user input or automatically responsive to a detection of a trigger or a detection of a condition being met or a detection of a threshold being satisfied, and then such row can be modified or appended to, such as via a population of another cell in that row, such as responsive to a user input or automatically responsive to a detection of a trigger or a detection of a condition being met or a detection of a threshold being satisfied. For example, a child worksheet can inherit a first row from a parent worksheet and then a second row can be added, whether above or below the first line, where a content of the second row is responsive to or based on a content of the first row or vice versa. For example, responsive to such inheritance, the server 112 can serve a third label and a third input element onto a second page, which is distinct from the first page, where the third label comprises a statement sourced from the third statement cell, where the third input element is configured for a third input according an identifier sourced from the third data type cell. For example, the server 112 may receive a modify request, such as an alphanumeric value or other data type value, from a client, such as the workstation 118, and in response modify the third worksheet such that a content of at least one of the third statement cell, the third data type cell, the third logic cell, or the third field cell is changed based on the modify request.

In some embodiments, the server 112, or along with the server 114, may host a network-based document management system, such as MS SharePoint, Filesite, or Google Drive. The document management system may provide a document check-in/check-out functionality in order to prevent a conflict where multiple users may want to concurrently modify the file comprising the spreadsheet. For example, responsive to the server 112 providing a GUI with a check-in/check-out functionality to a client, such as the workstation 118, over the LAN 116, and a receiving a check-in request from the client based on the GUI, the server 112 may add a new or modified file to a document library or a list to replace a previous version of the file, where the file comprises the spreadsheet. Likewise, responsive to the server 112 providing a GUI with a check-in/check-out functionality to a client, such as the workstation 118, over the LAN 116, and a receiving a check-out request from the client based on the GUI, the server 112 may get a version of the file in a file list or a file library, where the file comprises the spreadsheet. Therefore, via checking-out the file, a user of the client can prevent other users from modifying/editing that a content of the file. Similarly, via checking-in the file, the user of the client can allow others to edit the content of the file, without needing to worry about overriding changes that others have made. When the file is checked out to the user of the client, then that user can work on that file, and other users cannot. Consequently, other users must wait for the user to check-in the file again (that is, perform a check-in) before the other users can modify/edit the file. While the file is checked-out, other users may or may not see only a last version of the file that was checked-in via the user of the client and therefore the other users may or may not see a change that the user of the client, which is a current user of the file, has made on the file while the file has been checked-out. For example, where the client is a first client, such as the client computing device 124, the server 112 may receive a check-out request, such as a message, from a second client, such as the client operating the workstation 118, such as over the LAN 116. The check-out request may be before the server 112 serves the page with the first label and the first input element to the first client. In response to the check-out request, the server 112 may check-out the first file to the second client such that the server 112 serves, such as over the LAN 116, a check-out message to a third client, such as the terminal 120, when the third client attempts to access the first file. Therefore, the server 112 prevents, such as via file locking/privilege control/permission (read, write, delete) control, the third client from accessing the first file when the third client attempts to access the first file. The check-out message may inform the third client that the first file is checked-out and may notify who the first file is check-out to, such as the second client. Subsequently, the server 112 may receive a check-in request, such as a message, from the second client, such as over the LAN 116. The check-in request may be before the server 112 serves the page with the first label and the first input element. In response to the check-in request, the server 112 checks-in the first file from the second client such that the third client can access the first file. Such check-out and check-in process can also occur when the server 112 is serving pages to clients, such as for data integrity purposes.

In one mode of operation, whether additional to or alternative to any embodiment disclosed herein, the server 112 may receive a request for a page from a client, such as the client computing device 124, such as over the WAN 102. In response to such receipt, the server 112 may access a file comprising a spreadsheet, as disclosed herein, such as via the server 114, generate a first set of instructions based on the spreadsheet, such as a set of HTML code, and serve the first set of instructions to the client such that the first set of instructions executably presents (e.g., renders) the page on the client, such as over the WAN 102. The spreadsheet comprises a first row and a second row, where the first row comprises a first statement cell comprising a first statement, a first data type cell comprising a first data type identifier, and a first logic cell comprising a first logic, and where the second row comprises a second statement cell comprising a second statement, a second data type cell comprising a second data type identifier, and a second logic cell comprising a second logic, as disclosed herein. The page comprises a first label and a first input element, where the first label comprises the first statement, and where the first input element is configured for a first input based on the first data type identifier, as disclosed herein. Consequently, the server receives the first input, as disclosed herein. In response to such receipt, the server 112 evaluates the first input against the first logic, identifies the second statement based on the evaluation, generates a second set of instructions based on the identifying, and serves the second set of instructions to the client such that the second set of instructions executably presents a second label and a second input element on the page, as disclosed herein. For example, the first set of instructions and the second set of instructions can be a single set of instructions or multiple sets of instructions, whether identical to or different from each other in type, such as HTML, XML, or others. For example, the server 112 can serve the client with a single set of instructions, including the first set of instructions and the second set of instructions, yet the second set of instructions is not client-processed until the first set of instructions is client-processed or the second set of instructions is client-processed but delayed for client presentation, such as for proper sequence of reflexive questioning. The second label comprises the second statement, as disclosed herein. The second input element is configured for a second input based on the second data type identifier, as disclosed herein.

In one mode of operation, whether additional to or alternative to any embodiment disclosed herein, the server 112 may access a file comprising a spreadsheet, where the spreadsheet comprises a parent worksheet, as disclosed herein. The parent worksheet comprises a first row, where the first row comprises a first statement cell comprising a first statement, a first data type cell comprising a first data type identifier, and a first logic cell comprising a first logic, as disclosed herein. The server 112 may receive a first command from a client, such as the workstation 118, such as over the LAN 116, and in response, the server 112 may create a child worksheet in the spreadsheet, where the child worksheet comprises a second row. The second row inherits the first row such that the second row comprises, whether in a same or different data, organizational, or presentation format, a second statement cell comprising the first statement, a second data type cell comprising the first data type identifier, and a second logic cell comprising the first logic, as disclosed herein. The server 112 may receive a second command from the client, and in response, the server 112 may modify at least one of the first statement in the second statement cell, the first data type identifier in the second data type cell, or the first logic in the second logic cell, as disclosed herein. For example, the second command may call a function of the spreadsheet, such as a sum function, or comprise a data input, such as an alphanumeric string or a data type value, as disclosed herein. Note that the second command may enable an addition, deletion, modification, editing, appending or any other data amendment to the child worksheet, on cellular, columnar, or row level, as disclosed herein. The server 112 may generate a set of instructions corresponding to a page based on the child worksheet such that the page comprises a label and an input element, where the label comprises the first statement from the second statement cell as modified if at all, and where the input element is configured for an input based on the first data type identifier in the second data type cell as modified if at all, as disclosed herein. The server 112 may serve the set of instructions to the second client, and in response to such service, the server 112 may receive the input, evaluate the input against the first logic in the second logic cell as modified if at all, and perform an action based on the evaluating, as disclosed herein. For example, the action can comprise data structure/message generation/formation, storage, retrieval, population, copying, moving, editing, modifying, sorting, searching, sending, receiving, updating, deleting, encrypting, decrypting, de-duplicating, converting, uploading, downloading, or any other local or network-based data structure/message operation associated with a structure/message (data shell) or the data itself (content), as disclosed herein. The data (content) can contain any alphanumeric, image, acoustic, binary, symbolic, equation, formula, or any other content, as disclosed herein. For example, a spreadsheet can comprise the data (content). For example, the action can comprise a generation of a file, a service of a statement, a memorialization of an input, or a service of a message or any other actions disclosed herein.

In one mode of operation, whether additional to or alternative to any embodiment disclosed herein, the server 112 may serve a user interface to a first client, such as the workstation 118, such as over the LAN 116, as disclosed herein. The user interface comprises a check-out element configured for a check-out input related to the file, such as a file name identifier for user selection or a checkbox, and a check-in element configured for a check-in input related to the file, such as a file name identifier for user selection or a checkbox, as disclosed herein. For example, the file can be checked-out by opening the file and the file can be checked-in by closing the file, as disclosed herein. The file comprises a spreadsheet, where the spreadsheet comprises a row, as disclosed herein. The row comprises a statement cell comprising a statement, a data type cell comprising a data type identifier, and a logic cell comprising a logic, as disclosed herein. The server 112 receives the check-out input from the first client, such as over the LAN 116, and in response, the server 112 checks-out the file such that the file cannot be modified by a second client, such as the terminal 120, until the server 112 receives the check-in input from the first client, and modifies at least one of the statement, the data type identifier, or the logic based on a write request from the first client during the modifying, as disclosed herein. For example, the write request may enable an addition, deletion, modification, editing, appending or any other data amendment to the spreadsheet, on cellular, columnar, or row level, as disclosed herein. The server 112 may receive the check-in input from the first client after the modifying, and in response to such receipt, the server 112 may check-in the file such that the file can be modified by the second client, as disclosed herein. The server 112 may generate a set of instructions corresponding to a page based on the spreadsheet such that the page comprises a label and an input element, as disclosed herein. The label comprises the statement as modified if at all, as disclosed herein. The input element is configured for an input based on the data type identifier as modified if at all, as disclosed herein. The server 112 may receive the input in response to serving the set of instructions to a third client, such as the client computing device 124 and evaluate the input against the logic as modified if at all, and perform n action based on the evaluating, as disclosed herein. For example, the action can comprise data structure/message generation/formation, storage, retrieval, population, copying, moving, editing, modifying, sorting, searching, sending, receiving, updating, deleting, encrypting, decrypting, de-duplicating, converting, uploading, downloading, or any other local or network-based data structure/message operation associated with a structure/message (data shell) or the data itself (content), as disclosed herein. The data (content) can contain any alphanumeric, image, acoustic, binary, symbolic, equation, formula, or any other content, as disclosed herein. For example, a spreadsheet can comprise the data (content). For example, the action can comprise a generation of a file, a service of a statement, a memorialization of an input, or a service of a message or any other actions disclosed herein. Note that the check-in/check-out technology can be implemented via the document management system, as disclosed herein, such as MS SharePoint or Google Drive.

In some embodiments, the file with the spreadsheet can be stored local on a client, such as on the client computing device 124 or a memory device coupled to the client, such as an external hard disk, or an optical drive, a network-based storage drive, or a flash drive. For example, the file with the spreadsheet can be stored remote from the client, such as a network-based file hosting service, which may provide a cloud-based storage, file synchronization, personal cloud, or client software. For example, the network-based file hosting service may allow a user to create a folder on the user's computer, where the folder is synchronized, whether in real-time or periodically, with the network-based file hosting service such that the folder appears to be same folder (with same contents) regardless of which computing device is used to view the folder. For example, the network-based file storage service can comprise Dropbox or Google Drive. Therefore, the file with the spreadsheet can be locally processed, whether additional to or alternative to server processing.

In some embodiments, any strings/symbols/identifiers disclosed herein can be in any human or machine language in any alphanumeric font or via any pictorial, symbolic, or sound representation, such as a string, an icon, a banner, an audio, a video, or a photo. Also, note that if any strings/symbols/identifiers disclosed herein are improperly formatted, then the application server 112 may format into an appropriate format. For example, if the application server 112 receives a string/symbol/identifier in a first format, then the application server 112 can convert the string/symbol/identifier from the first format into a second format, such as for data structure or processor compatibility or computational efficiency. For the example, the first format can be in a first character-encoding scheme and the second format can be in a second character-encoding scheme. For example, the first format can an archive or zipped file and the second format can be un-archived or unzipped file.

In some embodiments, an input can be in a natural language form, such as in a sentence, sound, or image, where such input can be subsequently processed via the application server 112 implementing a natural language processing algorithms, such as based on statistical model machine learning. For example, such algorithms can involve automatic summarization, co-reference resolution, discourse analysis, machine translation, morphological segmentation, named entity recognition (NER), native language identification, natural language generation, natural language understanding, OCR, part-of-speech tagging, parsing, question answering, relationship extraction, sentence breaking, sentiment analysis, speech recognition, speech segmentation, stemming, topic segmentation and recognition, word segmentation, word sense disambiguation, or others.

FIG. 2 shows a flowchart of an embodiment of a process for file generation according to the present disclosure. A process 200 includes a plurality of blocks 202-230. The process 200 can be performed via the topology 100 of FIG. 1, in whole or in part.

In a block 202, the server 112 checks-out a first file containing a spreadsheet with a first row and a second row, as disclosed herein. The first file is checked-out to a first client, such as the workstation 118. Therefore, a second client, such as the terminal 120, is unable to check-in the first file at least for modifying/editing, such as for data integrity purposes. For example, the checking-out can be managed via the document management system, as disclosed herein. The server 112 may not always check out the first file; it may retrieve the file from a database.

In a block 204, the server 112 receives a plurality of first row cell inputs from the first client, as disclosed herein. For example, the first row cell inputs comprise the first statement, the first data type identifier, the first logic, and the first field identifier. Note that other row inputs are possible, such as a key cell input, as disclosed herein.

In a block 206, the server 112 populates the first row with the first row cell inputs such that the first row comprises a first statement cell comprising the first statement, a first data type cell comprising the first data type identifier, a first logic cell comprising the first logic, and a first field cell comprising the first field identifier, as a single cell or a multiple cells, in whole or in part, whether immediately adjacent to or spaced apart from each other via a cell, whether empty or containing a content, in the first row. The first row can include other cells, such as a first key cell comprising a first key, whether immediately adjacent to or spaced apart from each other via a cell, whether empty or containing a content, in the first row.

In a block 208, the server 112 receives a plurality of second row cell inputs from the first client, as disclosed herein. For example, the second row cell inputs comprise the second statement, the second data type identifier, the second logic, and the second field identifier. Note that other row inputs are possible, such as a key cell input, as disclosed herein.

In a block 210, the server 112 populates the second row with the second row cell inputs such that the second row comprises a second statement cell comprising the second statement, a second data type cell comprising the second data type identifier, a second logic cell comprising the second logic, and a second field cell comprising the second field identifier, as a single cell or a multiple cells, in whole or in part, whether immediately adjacent to or spaced apart from each other via a cell, whether empty or containing a content, in the second row. Note that the second row can include other cells, such as a second key cell comprising a second key, whether immediately adjacent to or spaced apart from each other via a cell, whether empty or containing a content, in the second row. Note that at least one of the first row or the second row can comprise a key cell containing a key, such as a unique or primary identifier, where at least one of the first statement or the second statement is identified via the key, such as via calling the unique or primary identifier. For example, when the second row comprises the key cell, then the server 112 can call the key based on the first logic in response to the evaluating and then the second statement is identified via the key. A cell in the first row and a cell in the second row can be shaped or sized identical to or different from each other. The first row and the second row can be immediately adjacent to each other or spaced apart from each other via a row in-between. The file can be a single file or a plurality of files. Also, other data structures can be used, whether additionally or alternative to the file. Further, note that any number of rows in a worksheet of a spreadsheet can be used. In some embodiments, the worksheet can comprise between 1 and 10,000 rows, such as between 2 and 5,000 rows, such as less than 4,000 rows. Note that this number is illustrative and more than 10,000 rows can also be used.

A cell can operate as a shell for a content stored therein. Therefore, an operation involving the cell or the content stored therein may include generation/formation, storage, retrieval, population, copying, moving, editing, modifying, sorting, searching, sending, receiving, updating, deleting, encrypting, decrypting, de-duplicating, converting, uploading, downloading, or any other local or network-based data cell operation. The content can contain any alphanumeric, image, acoustic, binary, symbolic, equation, formula, logic, or any other content. For example, alphanumeric data can include an alphabetic string, such as a statement or a question, whether or not including a punctuation mark of any type. For example, the alphanumeric data include a numerical string, including a mathematical symbol of any type. For example, symbol data can include a barcode or a quick response (QR) code. For example, the logic data can include a conditional/Boolean logic statement (if/then logic evaluating whether a statement is true or false) of any branching depth, or any other type logic. For example, the first or second statement can include an alphabetic string representative of a question, such as “Are you currently licensed to fly an aircraft?” For example, the first or second data type identifier can include a Boolean type, a multi-value type, a string, a number, or others. For example, the first or second logic can include an alphanumeric string, such as “If QB00001 !=QB00101”. For example, the first or second logic can include a causal conditional string, such as “if q10==true, then ask q16” or “if Q359!=false, then ask q3, otherwise ask q458”. Note that the causal condition string may help data entry for users with little or minimum programming knowledge. For example, the first or second field identifier can include an alphanumeric string, such as C6 or 6×. For example, the first or second key can include an alphanumeric string, such as “B00010”. Furthermore, a cell may “call out” another operation that may be performed by another computing device coupled with the client computing device 124.

In a block 212, the server 112 checks-in the first file containing, as disclosed herein. The first file is checked-in from the first client. Therefore, the second client is able to check-out the first file at least for modifying/editing. For example, the checking-in can be managed via the document management system, as disclosed herein.

In a block 214, the server 112 serves a page with a first label and a first input field based on the first row. For example, the server 112 may serve, such as dynamically, a page, such as a webpage, to a client, such as the client computing device 124, such as via the server 108 over the WAN 102. Such service can be based on the client requesting the page from the server 108. For example, upon receiving the page request from the client, such service can comprise the server 112 generating and then sending a set of executable instructions, such as markup language code, such as HTML or XML, to the client for execution, such as locally, to present the page, such as via a browser running on the OS of the client. Note that such service can comprise the server 112 generating and then sending the page to the client for presentation, such as locally, such as via a browser running on the OS of the client or non-browser app running on the OS, such as a mobile non-browser app. Note that such service can comprise an authenticated session between the server 112 and the client, such as for security purposes. The authenticated communication session can be via HTTPS protocol. The authenticated communication session can be via login/password or biometrics.

For example, the page visually presents, as dynamically generated, the first label and the first input element, such as a text entry box, a checkbox, a slider, a button, a dropdown menu, a sliding scale, or another other visual element. The first label comprises the first statement, such as an alphabetic string, sourced from the first statement cell based on dynamic page generation, such as via the first key. The first input element is configured for a first input, such as via a radio or option button or a dropdown menu, according to the first data type identifier sourced from the first data type cell based on dynamic page generation. Note that the server 112 seeks, calls, or identifies the first statement in the first row, such as via the first key, such as when via a default key or as identified or pointed to via another key. Upon such seeking, calling, or identifying, the server 112 copies the first statement for dynamic page generation, such as via the server 112 or the server 108 as instructed via the server 112.

In a block 216, the server 112 receives a first field input from the first input field, such as the first input element. For example, the server 112 receives the first field input from the client, such as over the WAN 102 via the server 108.

In a block 218, the server 112 evaluates the first field input against the first row. For example, the server 112 evaluates the first field input against the first logic, such as if the first input matches a condition disclosed via the first logic.

In a block 220, the server 112 serves a second label and a second input field onto the page based on the second row. For example, the server 112 can serve, such as over the WAN 102 via the server 108, the second label and the second input element onto the page based such evaluation. The second label comprises the second statement sourced from the second statement cell based on dynamic page generation, such as via a second key. The second input element is configured for a second input according to the second data type identifier sourced from the second data type cell based on dynamic page generation. Note that the server 112, upon evaluating the first input against the first logic, seeks, calls, or identifies the second statement in the second row, such as via the second key, such as when the first logic identifies or points to the second key. Upon such seeking, calling, or identifying, the server 112 copies the second statement for dynamic page generation, such as via the server 112 or the server 108 as instructed via the server 112. Note that the page can be a single page, such that the page concurrently contains the first label, the second label, the first input element, and the second input element. For example, the single page can concurrently present the first label, the second label, the first input element, and the second input element along a horizontal scrolling plane, a vertical scrolling plane, or a diagonal scrolling plane. Note that the page can be a plurality of pages, such that a first page contains the first label and the first input element, and a second page contains the second label and the second input element, with the first page and the second page being distinct pages, and the second page sequentially follows the first page. Note that the first or second input can be of any data type, such an alphanumeric string, a Boolean value (true or false), a symbol, or others.

In a block 222, the server 112 receives a second field input from the second input field. For example, the server 112 can receive the second input, such as over the WAN 102.

In a block 224, the server 112 generates a second file containing a first file field and a second file field. Alternatively, the second file is preexisting and can be copied and then populated or populated without copying. The generation of the second file can be responsive to receiving the second field input.

In a block 226, the server 112 inserts the first input into the first file field, such as an alphanumeric text entry field, of the second file, such as a productivity document file, such as an MS Word or Excel file, or a PDF document or a markup language file, such as an HTML file, based on the first field identifier, which identifies the first file field in the second file.

In a block 228, the server 112 inserts the second input into the second file field, such as a data entry field, such as a checkbox, of the second file based on the second field identifier, which identifies the second file field in the second file.

In a block 230, the server 112 saves the second file, as populated. Such saving can be local or network-based, as disclosed herein. Note that the server 112 can store the second file before the inserting or retrieve the second file via the DBMS hosted on the server 114 from the database hosted on the server 114. Also, note that the server 112 can generate the second file before the inserting, whether immediately before or not immediately before. Also, note that the second file may be an original file or a copy of another file, whether the copy is generated via the server 112 or the server 114. Additionally, note that the server 112 or the server 114 can generate the second file in response, whether immediate or not, to receiving the second input. Moreover, the second file can comprise a unique identifier before the inserting. For example, the unique identifier can be a barcode, a QR code, an alphanumeric string, or an image. For example, the server 112 or the server 114 can generate, retrieve, copy, or otherwise access the second file based on the unique identifier. In addition, if the page contains an alphanumeric or image content, such as graphical content, then the server 112 or the server 114 can be configured to filter out or avoid including such content in the second file when generating the second file, such as for a streamlined appearance when the second file is presented, displayed, or printed. In some embodiments, the server 112 or the server 114 may serve the second file to the client, such as the client computing device 124, where the second file comprises an electronic signature field that is ready to receive an electronic signature from the client. For example, such electronic signature may be useful for a network-based intake of a mortgage or insurance application and the first statement and the second statements must match word-for-word what has been previously submitted to a government agency, such as electronically. For example, where the first statement and the second statement are literally recited in a third file in a first order, such as when previously submitted, the third file is generated before the second file and before the page is served with the first label and the first input element. The page may display the first statement and the second statement in a second order, where the first order and the second order are different orders, although identical orders are possible as well. Note that the second file can be generated upon receiving a submit input, such as via an activation of a button or hyperlink on the page, or without receiving a submit input, such as upon reaching a threshold data point in the worksheet, such as a specific statement cell or logic cell. For example, the button can dynamically change from inactive or invisible to active or visible based on spreadsheet, such as upon reaching a threshold data point in the worksheet, such as a specific statement cell or logic cell. For example, the page can comprise a webpage with a dynamically updated form, including labels and fields. The page can contain a submission visual element, such as a button, programmed to activate an upload of the first input or the second input from the client to the application server 112, such as for storage in a record of the server 114, where the record can be subsequently accessed, such as via the DBMS as requested via the server 112, for generating the second file.

FIG. 3 shows a flowchart of an embodiment of a process for cell processing according to the present disclosure. A process 300 includes a plurality of blocks 302-324. The process 300 can be performed via the topology 100 of FIG. 1, in whole or in part.

In a block 302, the server 112 accesses a first key cell in a first row of a spreadsheet containing the first row and a second row, as disclosed herein. The first row comprises a first statement cell comprising a first statement, a first data type cell comprising a first data type identifier, a first logic cell comprising a first logic, a first field cell comprising the first field identifier, and the first key cell comprising a first key. For example, the server 112 can access the first key in the first key cell. Note that such cell order is one example and other cell orders are possible, in any permutational or combinatory manner, such as the first key cell being positioned in a first column of a worksheet of the spreadsheet. Further, note that at least two of such first row cells can be a single cell. Likewise, the second row comprises a second statement cell comprising a second statement, a second data type cell comprising a second data type identifier, a second logic cell comprising a second logic, a second field cell comprising a second field identifier, and a second key cell comprising a second key. Further, note that at least two of such second row cells can be a single cell. Note that such cell order is one example and other cell orders are possible, in any permutational or combinatory manner, such as the second key cell being positioned in the first column or the second column of the worksheet of the spreadsheet. Also, note that a cell in the first row and a cell in the second row can be shaped or sized identical to or different from each other. Note that the first row and the second row can be immediately adjacent to each other or spaced apart from each other via a row in-between.

Note that a cell operates as a shell for the content stored therein. Therefore, an operation involving the cell or the content stored therein may include generation/formation, storage, retrieval, population, copying, moving, editing, modifying, sorting, searching, sending, receiving, updating, deleting, encrypting, decrypting, de-duplicating, converting, uploading, downloading, or any other local or network-based data cell operation. The content can contain any alphanumeric, image, acoustic, binary, symbolic, equation, formula, logic, or any other content. For example, alphanumeric data can include an alphabetic string, such as a statement or a question, whether or not including a punctuation mark of any type. For example, the alphanumeric data include a numerical string, including a mathematical symbol of any type. For example, symbol data can include a barcode or a quick response (QR) code. For example, the logic data can include a conditional/Boolean logic statement (if/then logic evaluating whether a statement is true or false) of any branching depth, or any other type logic. For example, the first or second statement can include an alphabetic string representative of a question, such as “Are you currently planning to skydive?”. For example, the first or second data type identifier can include a Boolean type, a multi-value type, a string, a number, or others. For example, the first or second logic can include an alphanumeric string, such as “If QB00031<QB00205A”. For example, the first or second logic can include a causal conditional string, such as “if q10==true, then ask q16” or “if Q359!=4, then go q3, otherwise go to q458”. Note that other logic operations are possible, whether additionally or alternatively, such as greater than or lesser than, whether inclusively or exclusively, addition, subtraction, multiplication, division, variable assignment, functions, string content operations, network access (data pull/push or data read/write/delete/append), or other logic. For example, some of such logic may be found in or be similar to a computer language, such as Perl, Python, or JavaScript. Moreover, note that if the spreadsheet has a macro functionality, then the macro functionality can be used, whether additionally or alternatively. Further, note that the causal condition string may help data entry for users with little or minimum programming knowledge. For example, the first or second field identifier can include an alphanumeric string, such as C6 or 6×. For example, the first or second key can include an alphanumeric string, such as “B00010”. Further, note that any number of rows in a worksheet of a spreadsheet can be used. In some embodiments, the worksheet can comprise between 1 and 10,000 rows, such as between 2 and 5,000 rows, such as less than 4,000 rows. Note that this number is illustrative and more than 10,000 rows can be used, for example, 1,000,000 rows.

In a block 304, the server 112 copies the first statement in the first row from the first statement cell. For example, the first statement can be copied based on the server 112 calling the first key in the first key cell and then being directed to the first statement cell to retrieve the first statement therefrom.

In a block 306, the server 112 serves a page with a first label and a first input field based on the first identifier. For example, the server 112 may serve, such as dynamically, the page, such as a webpage, to a client, such as the client computing device 124, such as via the server 108 over the WAN 102. Such service can be based on the client requesting the page from the server 108. For example, upon receiving the page request from the client, such service can comprise the server 112 generating and then sending a set of executable instructions, such as markup language code, such as HTML or XML, to the client for execution, such as locally, to present the page, such as via a browser running on the OS of the client. Note that remote execution is possible, whether additionally or alternatively, such as when the client is running an Amazon Silk browser. Further, note that such service can comprise the server 112 generating and then sending the page to the client for presentation, such as locally, such as via a browser running on the OS of the client or non-browser app running on the OS, such as a mobile non-browser app. Also, note that such service can comprise an authenticated session between the server 112 and the client, such as for security purposes. The authenticated communication session can be via HTTPS protocol. The authenticated communication session can be via login/password or biometrics. For example, the page visually presents, as dynamically generated, the first label and the first input element, such as a text entry box, a checkbox, a slider, a button, a dropdown menu, a sliding scale, or another other visual element. The first label comprises the first statement, such as an alphabetic string, sourced from the first statement cell based on dynamic page generation, such as via the first key. The first input element is configured for a first input, such as via a radio or option button or a dropdown menu, according to the first data type identifier sourced from the first data type cell based on dynamic page generation. As noted above, the server 112 may seek, call, or identify the first statement in the first row, such as via the first key, such as when via a default key or as identified or pointed to via another key. Upon such seeking, calling, or identifying, the server 112 copies the first statement for dynamic page generation, such as via the server 112 or the server 108 as instructed via the server 112.

In a block 308, the server 112 receives a first input from the first input element. For example, the server 112 receives the first input from the client, such as the client computing device 124, such as over the WAN 102 via the server 108. For example, the first input can comprise a Boolean value, such as true or false, or an alphanumeric string, such as “yes” or “sometimes” or “1980” or “5/27/1974” or “May 3, 2001.” Note that the server 112 can store the first input locally or in the database hosted on the server 114. Such storage can persist temporarily or permanently. For example, the server 112 can communicably interface with the server 114 for storing or using the first input.

In a block 310, the server 112 evaluates the first input against the first logic cell in the first row. For example, the server 112 evaluates the first input against the first logic comprised in the first logic cell, such as whether the first input matches/satisfies or does not match/satisfy a condition/threshold disclosed via the first logic. For example, when (1) the first statement is a statement 42, such as whether identified as such via the first key in the first row or contained in a row 42 of a worksheet, and (2) the first input is associated with the first statement, such as responsive to the first statement being presented in the first label on the page, and (3) the first input comprises a true value, and (4) the first logic comprises a causal conditional string “if Q42==T, then seek Q50, otherwise seek Q19,” then the server 112 would evaluate the true value in the first input against the causal condition string as being present/existent/matched/satisfied and then seek a statement 50, such as whether identified as such via the second key in the second row or contained in a row 50 of the worksheet. In contrast, if the first input comprises a false value, then the server 112 would seek a statement 19, such as whether identified as such via a third key in a third row or contained in a row 19 of the worksheet. Note that the worksheet can be a single worksheet or a plurality of worksheets.

In a block 312, the server 112 identifies a second key cell in a second row of the spreadsheet. For example, the server 112 can access the second key in the second key cell. For example, the server 112 can access, such as via calling, the second key in the second key cell based on the first logic in the first logic cell in response to the evaluating in the block 310 and then the second statement is identified via the second key. For example, when the first logic states “go to Q30” or “seek s12,” then the server 112 can be programmed to go/seek a row 30 or row 12, such as whether identified as such via the second key in the second row or contained in a row 30 or row 12 of the worksheet.

In a block 314, the server 112 copies the second statement in the second row from the second statement cell. For example, the second statement can be copied based on the server 112 calling the second key in the second key cell and then being directed to the second statement cell to retrieve the second statement therefrom.

In a block 316, the server 112 serves a second label and a second input element based on a second data type identifier in the second row onto the page. For example, the server 112 can serve, such as dynamically, such as over the WAN 102 via the server 108, the second label and the second input element onto the page based such evaluation. For example, such service can be based on the client requesting the page from the server 108. The second label comprises the second statement sourced from the second statement cell based on dynamic page generation, such as via the second key. The second input element is configured for a second input according to the second data type identifier sourced from the second data type cell based on dynamic page generation. For example, the page visually presents the second label and the second input element, such as a text entry box, a checkbox, a slider, a button, a dropdown menu, a sliding scale, or another other visual element. The second label comprises the second statement, such as an alphabetic string, sourced from the second statement cell based on dynamic page generation, such as via the second key. The second input element is configured for a second input, such as via a radio or option button or a dropdown menu, according to the second data type identifier sourced from the second data type cell based on dynamic page generation.

Note that the page can be a single page, such that the page concurrently contains the first label, the second label, the first input element, and the second input element. For example, the single page can concurrently present the first label, the second label, the first input element, and the second input element along a horizontal scrolling plane, a vertical scrolling plane, or a diagonal scrolling plane. Note that the page can be a plurality of pages, such that a first page contains the first label and the first input element, and a second page contains the second label and the second input element, with the first page and the second page being distinct pages, and the second page sequentially follows the first page.

Note that the first or second input can be of any data type, whether identical to or different from each other, such an alphanumeric string, a Boolean value (true or false), a symbol, or others. Further, note that the server 112 may serve second label and the second input element onto the page based such evaluation during a same session when the first label and the first input element were served, such as a successive sequence of page events during a session. Note that the session can be a single session or a plurality of sessions, such as a resume from a left off point session. For example, upon receiving the page request from the client, such service can comprise the server 112 generating and then sending a set of executable instructions, such as markup language code, such as HTML or WL, to the client for execution, such as locally, to present the second label and the second input element onto the page, such as via a browser running on the OS of the client. Note that remote execution is possible, whether additionally or alternatively, such as when the client is running an Amazon Silk browser. Further, note that such service can comprise the server 112 generating and then sending the page to the client for presentation, such as locally, such as via a browser running on the OS of the client or non-browser app running on the OS, such as a mobile non-browser app. Also, note that such service can comprise an authenticated session between the server 112 and the client, such as for security purposes. The authenticated communication session can be via HTTP S protocol. The authenticated communication session can be via login/password or biometrics.

In a block 318, the server 112 receives a second input from the second input element. For example, the server 112 receives the second input from the client, such as the client computing device 124, such as over the WAN 102 via the server 108. For example, the second input can comprise a Boolean value, such as true or false, or an alphanumeric string, such as “no” or “never” or “1991” or “27/2/1982” or “4 Jun. 2001.” Note that the server 112 can store the second input locally or in the database hosted on the server 114. Such storage can persist temporarily or permanently. For example, the server 112 can communicably interface with the server 114 for storing or using the second input. Note that although FIG. 3 shows processing for the first row and the second row, any number of rows can be used, as disclosed herein. For example, the second row can call a third row, which may call a fourth row, whether in a same or different worksheet in a same or different spreadsheet. Note that any rows disclosed herein can be immediately consecutive/adjacent or can be spaced apart in any manner.

In a block 320, the server 112 generates, such as via creating, a second file containing a first field, such as an alphanumeric string or Boolean data entry field, and a second field, such as an alphanumeric string or Boolean data entry field. Alternatively, the second file is preexisting and can be copied and then populated, as disclosed herein, or populated without copying, such as the second file being original, including unique, such as via a unique identifier contained therein. The generation of the second file can be responsive to receiving the second field input. The second file can comprise a productivity document file, such as an MS Word or Excel file, or a PDF document or a markup language file, such as an HTML file, an electronic document file, a database record, or any other file. For example, the first field can be configured for an alphanumeric string input, such as a text field, and the second field input can be configured for a Boolean data input, such as a checkbox.

In a block 322, the server 112 populates the first field with the first input based on a first field identifier in the first row. For example, the server 112 inserts, such as via copying and writing, the first input into the first file field based on the first field identifier, which identifies the first file field in the second file.

In a block 324, the server 112 populates the second field with the second input based on a second field identifier in the second row. For example, the server 112 inserts, such as via copying and writing, the second input into the second file field based on the second field identifier, which identifies the second file field in the second file. The second file can be presented to the client, such as the client computing device 124, or stored in the database on the server 114, as disclosed herein.

As noted above, the server 112 can store the second file before the populating or retrieve the second file via the DBMS hosted on the server 114 from the database stored on the server 114. Also, note that the server 112 can generate the second file before the populating, whether immediately before or not immediately before. Also, note that the second file may be an original file or a copy of another file, whether the copy is generated via the server 112 or the server 114. Additionally, note that the server 112 or the server 114 can generate the second file in response, whether immediate or not, to receiving the second input. Moreover, the second file can comprise a unique identifier before the inserting. For example, the unique identifier can be a barcode, a QR code, an alphanumeric string, or an image. For example, the server 112 or the server 114 can generate, retrieve, copy, or otherwise access the second file based on the unique identifier. In addition, if the page contains an alphanumeric or image content, such as graphical content, then the server 112 or the server 114 can be configured to filter out or avoid including such content in the second file when generating the second file, such as for a streamlined appearance when the second file is presented, displayed, or printed. In some embodiments, the server 112 or the server 114 may serve the second file to the client, such as the client computing device 124, where the second file comprises an electronic signature field that is ready to receive an electronic signature from the client. For example, such electronic signature may be useful for a network-based intake of a mortgage or insurance application and the first statement and the second statements must match word-for-word what has been previously submitted to a government agency, such as electronically. For example, where the first statement and the second statement are literally recited in a third file in a first order, such as when previously submitted, the third file is generated before the second file and before the page is served with the first label and the first input element. The page may display the first statement and the second statement in a second order, where the first order and the second order are different orders, although identical orders are possible as well. Further, note that the second file can be generated upon receiving a submit input, such as via an activation of a button or hyperlink on the page, or without receiving a submit input, such as upon receiving a data input from the client, such as alphanumeric or Boolean, or reaching a threshold data point in the worksheet, such as a specific statement cell or logic cell. For example, the button can dynamically change from inactive or invisible to active or visible based on spreadsheet, such as upon reaching a threshold data point in the worksheet, such as a specific statement cell or logic cell. For example, the page can comprise a webpage with a dynamically updated form, including labels and fields. The page can contain a submission visual element, such as a button, programmed to activate an upload of the first input or the second input from the client to the application server 112, such as for storage in a record of the server 114, where the record can be subsequently accessed, such as via the DBMS as requested via the server 112, for generating the second file. Note that medical or employment application can be inputted similarly, as disclosed herein.

In an embodiment, the server 112 may receive a first file containing a spreadsheet. The server 112 may receive the first file via the client computing device or may retrieve the first file from a database (check in the first file as described above). The spreadsheet may comprise a first row and a second row. Each row may comprise a statement cell comprising a statement, a data type cell comprising a data type identifier, a logic cell comprising logic, a field cell comprising a field identifier. The server 112 may receive cell inputs for each row in the spreadsheet. For example, the input data for the first statement cell may be “what is your date of birth.” The inputted data for the data type cell may be “string.” The inputted data may be metadata for the first row and the second row. The first and second row may include information corresponding to a first and second component in a graphical user interface (GUI). In some embodiments, the spreadsheet may be stored in a database (e.g., an internal or external database) and the server 112 may receive an identification of the spreadsheet and a request to retrieve said spreadsheet. For example, the spreadsheet may be stored locally on the client computing device 124 or other computing components described in FIG. 1 (e.g., workstation 118 and terminal 120). In some embodiments, the spreadsheet may be stored onto the same computing device on which the server renders the GUI. For example, the client computing device 124 may contain the spreadsheet used by the server 112 to dynamically render the GUI. In some other embodiments, the spreadsheet may be partially stored onto more than one computing devices as a security measure to combat unwanted data intercepts.

Based on the inputted data, the server 112 may dynamically render a GUI comprising a first component based on a rendering request received from the client computing device 124 or other computing devices (e.g., workstation 118 and terminal 120). For example, the GUI may include a first label and a first input element. The first label may be the first statement sourced from and corresponding to the first statement cell. The first input element may be configured according to the first data type identifier sourced from and corresponding to the first data type cell. For example, the GUI may display a question “what is your date of birth” and a text box next to it where the client can type his/her date of birth in the text box. In other examples, the GUI may display a radio button or a drop down box for the same question based on the client indicating a desire for a radio button or a drop down box in the spreadsheet.

In some embodiments, the server 112 may render the GUI on a webpage displayed on the client computing device 124. The server 112 may have access to one or more databases or pre-stored web-based interfaces, such as webpages, comprising a number of preconfigured sub-interfaces, or containers, dynamically populated from the data analyzed and anonymized by the server 112. For example, the above-mentioned webpages may contain code, such as HTML or PHP, presenting a website of any number of webpages having a common “look-and-feel.” One or more output or results display webpages may contain additional code for containers, where the container code displays information or data (e.g., a questionnaire) that is configured to be dynamically and continuously generated (e.g., continuous and modular generation of the GUI based on user inputs). The server 112 may populate the sub-interfaces (containers) of the webpage with the appropriate components based on the spreadsheet, while the webpage display is configured to maintain the website's common aesthetic. The server 112 may modify the HTML code based on the received metadata from the spreadsheets in order to render the GUI.

The server 112 may receive a first input. For example, the client may input the requested date of birth in text box of the GUI displayed on the client device. After receiving the first input, the server 112 may evaluate the first input against a first logic included in the first row. If the first input is corresponding to the first logic, the server 112 may dynamically render a second component of GUI corresponding to the second row. The server 112 may render the GUI to include a second label and a second input element. The second label may be the second statement sourced from and corresponding to the second statement cell. The first input element may be configured according to the second data type identifier sourced from and corresponding to the second data type cell. For example, the server 112 may determine if the client is more than 18 years old to determine if the client is an adult. Based on the determination, the server 112 may provide different options depending on the application. For example, the server 112 may determine the client is more than 18 years old, and the server 112 may render the second component to ask if the client is married. The GUI may display a question “are you married” and a Boolean type input element (e.g., a radio button with options of “yes” and “no”) next to it.

The server 112 may receive a second input. For example, the server 112 may receive the marital data from the client by extracting the input data from the second input element. The server 112 may evaluate the second input against a second logic in the second row and render more user interface components based on the evaluation results. There may be any number of rows. For example, the second row may call a third row, which may call a fourth row. The server 112 may also display other files based on the logic from the spreadsheet. For example, the spreadsheet may require the server 112 to display different disclaimers based on different answers received form the client. For example, if the server 112 receives an input indicating that the client lives in New York and the client is under 18, the server 112 may be required to display certain disclaimers. The server 112 may then query a database based on the logic from the spreadsheet (e.g., query an internal or external database based on the disclaimer identifier indicated within the spreadsheet) and retrieve a file including the disclaimer and render said disclaimer on the GUI.

After the server 112 renders all rows, or the logic reaches the end of processing, the server 112 may generate a second file by inserting the inputs into the corresponding field of the second file. For example, the server 112 may insert the first input into a first field of the second file based on the first field identifier, and insert the second input into the second file based on the second file identifier. For example, the server 112 may insert the inputted data of birth into a corresponding field in the first row of the second file, and the inputted marital status into a corresponding field of the second row of the second file. In some embodiments, the server 112 may generate the second file by replicating exactly what the client has viewed on the GUI. For example, all the boxes (e.g., radio buttons, drip downs, disclaimers, and other GUI components) may be the same. In some other embodiments, the server 112 may only retrieve the answers (e.g., inputted by the client) and generate the second file based on said inputs. The server 112 may also generate a third file (e.g., a report file) indicating whether the inputs are consistent with the logic of the spreadsheet. For example the report file may indicate (e.g., flag) the age of the client if the client is younger than 18 years of age. The server 112 may transmit the report file upon in real time or in batches (e.g., upon termination of one data intake).

FIG. 4 shows a flowchart of an embodiment of a process for inheritance based data structure generation according to the present disclosure. A process 400 includes a plurality of blocks 402-422. The process 400 can be performed via the topology 100 of FIG. 1, in whole or in part.

In a block 402, the server 112 creates a first worksheet in a spreadsheet, as disclosed herein. For example, the spreadsheet can be network-based, such as Google Docs or MS Office 365. The first worksheet comprises a first row. For example, the spreadsheet can be presented on a network page, such as a webpage, over the LAN 116 or the WAN 102.

In a block 404, the server 112 receives a plurality of first row cell inputs from a client, such as the workstation 118, as disclosed herein. For example, the first row cell inputs can include a first statement, a first data type identifier, a first logic, a first field identifier, or a first key.

In a block 406, the server 112 populates the first row of the first worksheet with the first row cell inputs, as disclosed herein. For example, the server 112 populates the first row of the first worksheet such that the first row comprises a first statement cell comprising the first statement, a first data type cell comprising the first data type identifier, a first logic cell comprising the first logic, a first field cell comprising the first field identifier, or the first key cell comprising the first key. Note that such cell order is one example and other cell orders are possible, in any permutational or combinatory manner, such as the first key cell being positioned in a first column of a worksheet of the spreadsheet. Further, note that at least two of such first row cells can be a single cell.

In a block 408, the server 112 creates a second worksheet with a second row in the spreadsheet, as disclosed herein. For example, the client requests the server 112 to create the second worksheet, such as via a create worksheet request.

In a block 410, the server 112 may inherit at least some cell content from the first row of the first worksheet into the second row of the second worksheet. Note that more than one row inheritance is possible, such as one-to-one, one-to-many, many-to-one, or many-to-many. During such creation, the second worksheet may inherit data or format from the first worksheet, such as the first row, whether on a columnar, row, or cellular basis, as disclosed herein. For example, the second row may comprise a second statement cell comprising the first statement, a second data type cell comprising the first data type identifier, a second logic cell comprising the first logic, a second field cell comprising the first field identifier, or a second key cell comprising the first key. Further, note that at least two of such second row cells can be a single cell. Note that such cell order is one example and other cell orders are possible, in any permutational or combinatory manner, such as the second key cell being positioned in the first column or the second column of the second worksheet. Also, note that a cell in the first row and a cell in the second row can be shaped or sized identical to or different from each other. Note that the first row and the second row can be immediately adjacent to each other or spaced apart from each other via a row in-between. Note that cell order, size, shape, or other cell attributes in rows can be inherited.

Note that such inheritance, whether single, multiple, or multilevel, is similar to inheritance in object-oriented programming, where a child object inherits a property/attribute/feature from a parent object. Likewise, a child worksheet can be based on another worksheet (parent worksheet), whether in a same or different spreadsheet or file or database or record or data structure, whether sourced locally or through a network, using a same implementation or specifying implementation to maintain a same behavior (realizing an interface or inheriting behavior). Such type of inheritance is a mechanism for code reuse and to allow independent extensions of an original worksheet or spreadsheet. For example, such relationships give rise to a worksheet hierarchy. For example, a child worksheet can inherit a row from a parent worksheet, such as responsive to a user input or automatically responsive to a detection of a trigger or a detection of a condition being met or a detection of a threshold being satisfied, and then such row can be modified or appended to, such as via a population of another cell in that row, such as responsive to a user input or automatically responsive to a detection of a trigger or a detection of a condition being met or a detection of a threshold being satisfied. For example, a child worksheet can inherit a first row from a parent worksheet and then a second row can be added, whether above or below the first line, where a content of the second row is responsive to or based on a content of the first row or vice versa. Note that more than two worksheets are possible, in any type of hierarchical branching. For example, the server 112 can maintain or generate a hierarchical worksheet map can be served, such as presented via display or print, so that a worksheet tree is displayed, where each of the nodes corresponds to a worksheet. This map allows a user to easily navigate inheritance hierarchy.

In a block 412, the server 112 receives a second row cell input, such as from the workstation 118 over the LAN 116. The second row cell input can trigger the server 112 for perform at least one of a block 414, a block 416, or a block 418. For example, all of the blocks 414, 416, and 418 can be performed; and in some embodiments, less than all the blocks can be performed.

In the block 414, the second row cell input can append to the second row. For example, such appending can include an addition or removal of a cell/content after last populated cell in the second row. For example, such appending can further define a child worksheet from a parent worksheet.

In the block 416, the second row cell input can modify at least one of the first row cell inputs in the second row. For example, such modification can edit at least one of the second statement cell comprising the first statement, the second data type cell comprising the first data type identifier, the second logic cell comprising the first logic, the second field cell comprising the first field identifier, or the second key cell comprising the first key. Such edit can include amending or deleting, in content or format. For example, such appending can further define a child worksheet from a parent worksheet.

In the block 418, the second row cell input can add a third row to the second worksheet. For example, the third row, which may be a new row, may further add content/rules to the second worksheet. The third row may be added, as disclosed herein, whether immediately or not immediately adjacent to the second row. For example, such adding can further define a child worksheet from a parent worksheet. However, note that removal of rows may be possible as well.

In a block 420, the server 112 serves, such as dynamically, a page with an input field based on the second row, as disclosed herein. For the example, the server 112 may serve the page to the client computing device 124 over the WAN 102 based on a request received from the client computing device 124 over the WAN 102. For example, upon receiving the page request from the client, such service can comprise the server generating and then sending a set of executable instructions, such as markup language code, such as HTML or WL, to the client for execution, such as locally, to present the page, such as via a browser running on the OS of the client. Note that such service can comprise the server generating and then sending the page to the client for presentation, such as locally, such as via a browser running on the OS of the client or non-browser app running on the OS, such as a mobile non-browser app. Note that such service can comprise an authenticated session between the server 112 and the client, such as for security purposes. The authenticated communication session can be via HTTPS protocol. The authenticated communication session can be via login/password or biometrics.

The page visually presents, as dynamically generated, a label and an input element, such as a text entry box, a checkbox, a slider, a button, a dropdown menu, a sliding scale, or another other visual element. The label comprises the first statement, such as an alphabetic string, sourced from the second statement cell, as modified if at all in the second worksheet, based on dynamic page generation, such as via the first key, as modified if at all in the second worksheet. The input element is configured for an input, such as via a radio or option button or a dropdown menu, according to the first data type identifier sourced from the second data type cell in the second worksheet, as modified if at all in the second worksheet, based on dynamic page generation.

In a block 422, the server 112 generates a data structure, such as a file, storing an input from the input field. The data structure can be a table, a list, a matrix, a grid, a queue, a stack, a deck, a quadtree, or others. For example, the file can comprise a productivity document file, such as an MS Word or Excel file, or a PDF document or a markup language file, such as an HTML file. Note that the server 112 can store the data structure before the storing of the input or retrieve the data structure via the DBMS hosted on the server 114 from the database hosted on the server 114. Also, note that the server 112 can generate the data structure before the storing, whether immediately before or not immediately before. Also, note that the data structure may be an original file or a copy of another data structure, whether the copy is generated via the server 112 or the server 114. Additionally, note that the server 112 or the server 114 can generate the data structure in response, whether immediate or not, to receiving the input. Moreover, the data structure can comprise a unique identifier before the inserting. For example, the unique identifier can be a barcode, a QR code, an alphanumeric string, or an image. For example, the server 112 or the server 114 can generate, retrieve, copy, or otherwise access the data structure based on the unique identifier.

FIG. 5 shows a flowchart of an embodiment of a first process for document management according to the present disclosure. A process 500 includes a plurality of blocks 502-514. The process 500 can be performed via the topology 100 of FIG. 1, in whole or in part.

In a block 502, the server 112 checks-out a spreadsheet with a first row and a second row to a first client. For example, the server 112, or along with the server 114, may host a network-based document management system, such as MS SharePoint, MS Office 365, FileSite, or Google Drive. The document management system may provide a document check-in/check-out functionality in order to prevent a conflict where multiple users may want to concurrently modify the file comprising the spreadsheet. For example, the server 112 may serve a user interface, such as a GUI, to the first client, such as the workstation 118, such as over the LAN 116, as disclosed herein. The user interface comprises a check-out element configured for a check-out input related to a file, such as a file name identifier for user selection or a checkbox, and a check-in element configured for a check-in input related to the file, such as a file name identifier for user selection or a checkbox, as disclosed herein. For example, the file can be checked-out by opening the file and the file can be checked-in by closing the file, as disclosed herein. The file comprises the spreadsheet with the first row and the second row, as disclosed herein. For example, the server 112 receives the check-out input from the first client, such as over the LAN 116, and in response, the server 112 checks-out the file such that the file cannot be modified by a second client, such as the terminal 120, until the server 112 receives the check-in input from the first client. The check-out request may be before the server 112 serves the page with a label and an input element to a client, such as the client computing device 124. In an embodiment, the workstation may check out a file stored locally or onto any of the databases illustrated in FIG. 1. The checked-out spreadsheet may be used to dynamically generate a GUI on a client computing device (e.g., client computing device 124).

In a block 504, outputs a check-out message to the second client. For example, the server 112 serves, such as over the LAN 116, the check-out message to a second client, such as the terminal 120, when the second client attempts to access the file. Therefore, the server 112 prevents, such as via file locking/privilege control/permission (read, write, delete) control, the second client from accessing the file when the second client attempts to access the file. The check-out message may inform the second client that the file is checked-out and may notify who the file is check-out to, such as the first client.

In a block 506, the server 112 receives a set of first row cell inputs and a set of second row cell inputs, as disclosed herein. For example, the set of first row cell inputs can comprise a first statement, a first data type identifier, a first logic, a first field identifier, or a first key. For example, the set of second row cell inputs can comprise a second statement, a second data type identifier, a second logic, a second field identifier, or a second key. In an embodiment, the first client operating the workstation 118 may modify the checked out spreadsheet in order to customize the GUI to be generated.

In a block 508, the server 112 populates the first row with the first set of inputs and the second row with the second set of inputs. For example, the server 112 populates the first row of the worksheet such that the first row comprises a first statement cell comprising the first statement, a first data type cell comprising the first data type identifier, a first logic cell comprising the first logic, a first field cell comprising the first field identifier, or the first key cell comprising the first key. Likewise, the server 112 populates the second row of the worksheet such that the second row comprises a second statement cell comprising the second statement, a second data type cell comprising the second data type identifier, a second logic cell comprising the second logic, a second field cell comprising the second field identifier, or the second key cell comprising the second key. Note that such population can be original population or modifying population. For example, the modifying population can modify at least one of the first or second statement, the first or second data type identifier, or the first or second logic based on a write request from the first client during the modifying, as disclosed herein. For example, the write request may enable an addition, deletion, modification, editing, appending or any other data amendment to the spreadsheet, on cellular, columnar, or row level, as disclosed herein.

In a block 510, the server 112 checks-in the spreadsheet. For example, the server 112 may receive a check-in request, such as a message, from the first client, such as over the LAN 116. The check-in request may be before the server 112 serves the page with the label and the input element, as noted above. In response to the check-in request, the server 112 checks-in the spreadsheet from the first client such that the second client can access the spreadsheet. Such check-out and check-in process can also occur when the server 112 is serving pages to clients, such as for data integrity purposes.

Note that the block 504 is sized to correspond with the blocks 506, 508, and 510, such as for parallel processing purposes. As noted above, in some embodiments, the application server 112 comprises a processor hosting a plurality of cores, as disclosed herein. Therefore, during the block 504, the application server 112 may be parallel processing blocks 506, 508, and 510. This provides for more efficient use of the application server 112.

For example, responsive to the server 112 providing a GUI with a check-in/check-out functionality to the first client, such as the workstation 118, over the LAN 116, and a receiving a check-in request from the first client based on the GUI, the server 112 may add a new or modified file to a document library or a list to replace a previous version of the file, where the file comprises the spreadsheet. Likewise, responsive to the server 112 providing a GUI with a check-in/check-out functionality to a client, such as the workstation 118, over the LAN 116, and a receiving a check-out request from the client based on the GUI, the server 112 may get a version of the file in a file list or a file library, where the file comprises the spreadsheet. Therefore, via checking-out the file, a user of the client can prevent other users from modifying/editing that a content of the file. Similarly, via checking-in the file, the user of the client can allow others to edit the content of the file, without needing to worry about overriding changes that others have made. Note that when the file is checked out to the user of the client, then that user can work on that file, and other users cannot. Consequently, other users must wait for the user to check-in the file again (that is, perform a check-in) before the other users can modify/edit the file. While the file is checked-out, other users may or may not see only a last version of the file that was checked-in via the user of the client and therefore the other users may or may not see a change that the user of the client, which is a current user of the file, has made on the file while the file has been checked-out. For example, the server 112 may receive the check-in input from the first client after the modifying, and in response to such receipt, the server 112 may check-in the file such that the file can be modified by the second client, as disclosed herein.

In a block 512, the server 112 dynamically generates a page based on the first row and the second row. For example, the server 112 serves the page (on the client computing device 124) with a first input field based on the first row and a second input field based on the second row, as disclosed herein. The server 112 may serve the page to the client computing device 124 over the WAN 102 based on a request received from the client computing device 124 over the WAN 102. For example, upon receiving the page request from the client, such service can comprise the server generating and then sending a set of executable instructions, such as markup language code, such as HTML or XML, to the client for execution, such as locally, to present the page, such as via a browser running on the OS of the client. Note that such service can comprise the server generating and then sending the page to the client for presentation, such as locally, such as via a browser running on the OS of the client or non-browser app running on the OS, such as a mobile non-browser app. Note that such service can comprise an authenticated session between the server 112 and the client, such as for security purposes. The authenticated communication session can be via HTTPS protocol. The authenticated communication session can be via login/password or biometrics.

The page visually presents, as dynamically generated, a label and an input element, such as a text entry box, a checkbox, a slider, a button, a dropdown menu, a sliding scale, or another other visual element. The label comprises the first or second statement, such as an alphabetic string, sourced from the first or second statement cell, as modified if at all in the spreadsheet, based on dynamic page generation, such as via the first or second key, as modified if at all in the spreadsheet. The input element is configured for an input, such as via a radio or option button or a dropdown menu, according to the first or second data type identifier sourced from the first or second data type cell in the spreadsheet, as modified if at all in the spreadsheet, based on dynamic page generation.

In a block 514, the server 112 populates a data structure, such as a file, based on an input from the page, such as via an input field. The data structure can be a table, a list, a matrix, a grid, a queue, a stack, a deck, a quadtree, or others. For example, the file can comprise a productivity document file, such as an MS Word or Excel file, or a PDF document or a markup language file, such as an HTML file. Note that the server 112 can store the data structure before the storing of the input or retrieve the data structure via the DBMS hosted on the server 114 from the database hosted on the server 114. Also, note that the server 112 can generate the data structure before the storing, whether immediately before or not immediately before. Also, note that the data structure may be an original file or a copy of another data structure, whether the copy is generated via the server 112 or the server 114. Additionally, note that the server 112 or the server 114 can generate the data structure in response, whether immediate or not, to receiving the input. Moreover, the data structure can comprise a unique identifier before the inserting. For example, the unique identifier can be a barcode, a QR code, an alphanumeric string, or an image. For example, the server 112 or the server 114 can generate, retrieve, copy, or otherwise access the data structure based on the unique identifier. The file (e.g., data structure) may represent the page presented on the client computing device 124 (block 512) and may include all the responses (e.g., inputs) received from the client computing device 124.

In some embodiments, the file with the spreadsheet can be stored local on a client, such as on the client or a memory device coupled to the client, such as an external hard disk, or an optical drive, a network-based storage drive, or a flash drive. For example, the file with the spreadsheet can be stored remote from the client, such as a network-based file hosting service, which may provide a cloud-based storage, file synchronization, personal cloud, or client software. For example, the network-based file hosting service may allow a user to create a folder on the user's computer, where the folder is synchronized, whether in real-time or periodically, with the network-based file hosting service such that the folder appears to be same folder (with same contents) regardless of which computing device is used to view the folder. For example, the network-based file storage service can comprise Dropbox or Google Drive. Therefore, the file with the spreadsheet can be locally processed, whether additional to or alternative to server processing.

FIG. 6 shows a flowchart of an embodiment of a second process for document management according to the present disclosure. A process 600 includes a plurality of blocks 602-616. The process 600 can be performed via the topology 100 of FIG. 1, in whole or in part. The process 600 may be performed via the server 112 hosting a spreadsheet processing engine, which may comprise a document check-in/check-out component, a page generation component, and a data structure generation component. For example, a component may comprise a module, an engine, a function, a routine, a class, an object, or others. The process 600 may be useful to ensure data integrity for the spreadsheet processing engine, such as during dynamic page generation. The process 600 may also be useful to testing how a page is served or a data structure is generated.

In a block 602, the server 112 makes a spreadsheet with a first populated row and a second populated row not available to a first client. This can happen in various ways, such as via the server 112 checking-out the spreadsheet relative to the first client, hiding the spreadsheet relative to the first client, changing data access rights to the spreadsheet relative to the first client, changing user privileges to the spreadsheet relative to the first client, or others. The first populated row or the second populated row may be populated, as disclosed herein, such as via the first client before the server 112 makes the spreadsheet not available to the first client. Also, note that the server 112 can make the spreadsheet not available to the first client when the first client requests the server 112 to do so or the server 112 is activated/triggered do so, such as via the first client communicably interfacing with the first server, such via check-in/check-out process. Further, the server 112 can make the spreadsheet not available to the first client via a network security system process, such as via the firewall 106 or the firewall 110, a hiding of the spreadsheet process from the first client, such as the firewall 106 or the firewall 110, a document management system or the document check-in/out component, which may be unitary with the document management system. Therefore, via checking-out the spreadsheet to the first client, the server 112 prevents the first client from modifying/editing that a content of the spreadsheet, which may even include reading the content.

In a block 604, the server 112 outputs an unavailable message, such as a check-out message, to the first client. For example, the server 112 serves, such as over the LAN 116, the unavailable message, such as a spreadsheet unavailable message, to the first client when the first client attempts to access the spreadsheet. Therefore, the server 112 prevents, such as via file locking/privilege control/permission (read, write, delete) control, the first client from accessing the spreadsheet when the first client attempts to access the spreadsheet. The unavailable message may inform the first client that the spreadsheet is checked-out and may notify whom the spreadsheet is checked-out to, such as the server 112.

In a block 606, the server 112 serves a dynamic page to a second client based on the first populated row and the second populated row. For example, the server 112 dynamically generates the page based on the first populated row and the second populated row. For example, the server 112 serves the page with a first input field based on the first row and a second input field based on the second row, as disclosed herein. The server 112 may serve the page to the second client, such as the client computing device 124 or the terminal 120, over the WAN 102 based on a request received from the second client over the WAN 102. For example, upon receiving the page request from the second client, such service can comprise the server generating and then sending a set of executable instructions, such as markup language code, such as HTML or XML, to the second client for execution, such as locally, to present the page, such as via a browser running on the OS of the second client. Note that such service can comprise the server 112 generating and then sending the page to the second client for presentation, such as locally, such as via a browser running on the OS of the second client or non-browser app running on the OS, such as a mobile non-browser app. Note that such service can comprise an authenticated session between the server 112 and the second client, such as for security purposes. The authenticated communication session can be via HTTPS protocol. The authenticated communication session can be via login/password or biometrics.

The page visually presents, as dynamically generated, a label and an input element, such as a text entry box, a checkbox, a slider, a button, a dropdown menu, a sliding scale, or another other visual element. The label comprises the first or second statement, such as an alphabetic string, sourced from the first or second statement cell, as modified if at all in the spreadsheet, based on dynamic page generation, such as via the first or second key, as modified if at all in the spreadsheet. The input element is configured for an input, such as via a radio or option button or a dropdown menu, according to the first or second data type identifier sourced from the first or second data type cell in the spreadsheet, as modified if at all in the spreadsheet, based on dynamic page generation.

In a block 608, the server 112 generates a data structure based on an input from the dynamic page. For example, the server 112 populates the data structure, such as a file, based on the input from the page, such as via an input field. The data structure can be a table, a list, a matrix, a grid, a queue, a stack, a deck, a quadtree, or others. For example, the file can comprise a productivity document file, such as an MS Word or Excel file, or a PDF document or a markup language file, such as an HTML file. Note that the server 112 can store the data structure before the storing of the input or retrieve the data structure via the DBMS hosted on the server 114 from the database hosted on the server 114. Also, note that the server 112 can generate the data structure before the storing, whether immediately before or not immediately before. Also, note that the data structure may be an original file or a copy of another data structure, whether the copy is generated via the server 112 or the server 114. Additionally, note that the server 112 or the server 114 can generate the data structure in response, whether immediate or not, to receiving the input. Moreover, the data structure can comprise a unique identifier before the inserting. For example, the unique identifier can be a barcode, a QR code, an alphanumeric string, or an image. For example, the server 112 or the server 114 can generate, retrieve, copy, or otherwise access the data structure based on the unique identifier. Therefore, since the server 112 checks-out the spreadsheet to the spreadsheet processing engine, the server 112 ensures that the page is dynamically generated properly, while minimizing data integrity issues and maximizing data accuracy, which may arise if the spreadsheet is edited while the page is being served. Likewise, since the server 112 checks-out the spreadsheet to the spreadsheet processing engine, the server 112 ensures that the data structure is generated properly, while minimizing data integrity and maximizing data accuracy.

In some embodiments, the file with the spreadsheet can be stored local on a client, such as on the client or a memory device coupled to the client, such as an external hard disk, or an optical drive, a network-based storage drive, or a flash drive. For example, the file with the spreadsheet can be stored remote from the client, such as a network-based file hosting service, which may provide a cloud-based storage, file synchronization, personal cloud, or client software. For example, the network-based file hosting service may allow a user to create a folder on the user's computer, where the folder is synchronized, whether in real-time or periodically, with the network-based file hosting service such that the folder appears to be same folder (with same contents) regardless of which computing device is used to view the folder. For example, the network-based file storage service can comprise Dropbox or Google Drive. Therefore, the file with the spreadsheet can be locally processed, whether additional to or alternative to server processing.

In a block 610, the server 112 avails the spreadsheet to the first client. Such availing can be performed via a network security system process, such as via the firewall 106 or the firewall 110, an un-hiding of the spreadsheet process from the first client, such as the firewall 106 or the firewall 110, a document management system or the document check-in/out component, which may be unitary with the document management system. Therefore, via checking-in the file from the spreadsheet processing engine, the server 112 enables the first client to modify/edit a content of the spreadsheet, which may even including reading the content. Also, note that such availing can be client-activated/triggered, such as via the first client communicably interfacing with the first server, such via check-in/check-out process. For example, such client activation/trigger can be an interrupt command, which may interrupt page service or data structure generation.

In a block 612, the server 112 checks-out the spreadsheet to the first client, as disclosed herein. Therefore, a third client, such as the terminal 120, is unable to check-in the spreadsheet at least for modifying/editing, such as for data integrity purposes. For example, the checking-out can be managed via the document management system, as disclosed herein.

In a block 614, the server 112 modifies the spreadsheet via the first client, as disclosed herein. For example, such modification may be of the blocks 414-418.

In a block 616, the server 112 checks-in the spreadsheet from the first client. The spreadsheet is checked-in from the first client. Therefore, the third client or the spreadsheet processing engine is able to check-out the spreadsheet at least for modifying/editing or page service or data structure generation. For example, the checking-in can be managed via the document management system, as disclosed herein. Therefore, the spreadsheet processing engine may perform the block 602. Although FIG. 6 appears to show an infinite loop, note that the process 600 can be interrupted by the interrupt, as disclosed herein, or other process interrupt procedures, such as updates or maintenance or by the first client. The embodiment illustrated in FIG. 6, allows the page to be dynamically rendered to the second client without being modified by the first client while the page is being viewed by the second client. For example, the first client may not have access to the spreadsheet while the second client is interacting with the page. The first client must wait until the second client has completed interacting and the server 112 has generated the data structure (block 608).

FIGS. 7A-B show a screenshot of an embodiment of a spreadsheet containing a parent worksheet being active for data input as selected via a parent worksheet tab and a child worksheet being inactive for data input as not selected via a child worksheet tab according to the present disclosure. FIG. 7C shows a graphical user interface dynamically rendered based on the spreadsheets illustrated in FIGS. 7A-B. As illustrated in FIG. 7A, the parent spreadsheet comprises of data needed to dynamically generate a GUI. For example, column B illustrates a key cell that identifies the row (e.g., the field to be rendered); Column C illustrates a question level that may be modified by the user; column D illustrates a statement cell (e.g., the question or the statement to be rendered); column E represents the logic of the response (e.g., accepted responses). In an embodiment, the server 112 uses row #2 (e.g., key #00201) to render component 710 on GUI 700. The server 112 uses cell D-2 to populate the text component 720, uses cell K-2 to render the help button 740 (e.g., when the use interacts with the help button 740, the GUI 700 displays the text from cell K-2), uses cell L-2 to render radio buttons 730. Some of the statements may comprise a question and the server 112 may present a question in a reflexive manner based on a rule controlling when a question will or will not be asked. For example, once the server 112 receives an input from the client computing device 124, the server 112 renders the next GUI component based on the information provided by column N and the conditions provided by column 0. For example, if the server 112 receives a “No, it's for other purposes” input to radio buttons 730 (as outlines in cell O-3), the server 112 will display row #3 (e.g., Key #00202) based on the received instructions from cell N-3. As illustrated in FIG. 7C, the answer received by the server 112 was “yes.” As a result, the server 112 renders row #2 instead of row #3. Parent worksheet also illustrates the aesthetic preferences for rendering the GUI 700. For example, cell J-2 instructs the server 112 as to the width of the component 710. The worksheets (the parent and the child worksheets) may also control lateral or longitudinal length, color/contrast, position, font, shape, size, or other relevant attribute of any GUI component.

FIG. 8A shows a screenshot of an embodiment of a spreadsheet containing a parent worksheet being inactive for data input as not selected via a parent worksheet tab and a child worksheet being active for data input as selected via a child worksheet tab according to the present disclosure. FIG. 8B shows a graphical user interface dynamically rendered based on the spreadsheet illustrated in FIG. 8A. The child spreadsheet illustrated is FIG. 8A may be a spreadsheet generated by the server 112 using the object-oriented programming concept of “inheritance” where the rows of the child worksheet inherit the property, attribute, and features of the parent worksheet (or another worksheet as directed by the user). For example, in the spreadsheet illustrated in FIG. 8A, rows with a prefix of B inherit properties of their corresponding rows from the parent worksheet (FIG. 7A-B). The user may have the ability to override or modify these properties. If left blank (e.g., row #3) the server 112 may render the GUI based on the properties of the indicated key (e.g., row #4 of the parent worksheet). The server 112 may use the same method (shown above in FIG. 7A-C) to render a GUI that corresponds to the child worksheet. For example, the server 112 uses the cells of the child worksheet to render GUI 800.

FIG. 9 shows a screenshot of an embodiment of a single network page generated based on a spreadsheet according to the present disclosure. The single network page is scrollable along a vertical plane. The single network page depicts various fields as generated via the worksheets of FIGS. 7A-B. Screenshot 900 may depict the components of GUI 700 and may include the inputs received from the client computing device (not shown). Furthermore, screenshot 900 may reorganize the GUI components in a way that is customizable by the user/client. For example, screenshot 900 may be generated to replicate the exact order of components and questions viewed by the user. The screenshot 900 may also designate and/or organize each component by its respective “section” (e.g., column M of the parent worksheet) or any other attribute of the worksheet that the server 112 has used to render the GUI.

FIGS. 10A-10B show an embodiment of a table of reflexive questions and rules, where the reflexive questions appear in a dynamically adjusted network page based on the rules, where the rules determine when a question will or will not be asked according to the present disclosure. The server 112 may generate the table of reflexive questions based on the worksheet that the server 112 has used to render the GUI presented on the client computing device. For example, table 1000 corresponds to the parent worksheet illustrated in FIGS. 7A-B and illustrates the logic used to generate GUI 700. Table 1000 may comprise a plurality of columns and a plurality of rows. As shown, the question number column lists the key (a question number), the logic column lists the logic (a rule defining for when a question will or will not be asked, i.e., controlling a reflexive question aspect of the spreadsheet), the statement column lists the statement (a question string) and the input type column lists the input type (an option for a response to a question string). For example, if an answer to a question 1 (key is 1), “Are you the person being insured?” is “my spouse” or “my partner or fiancé”, then a reference to “your” from question 2 (key is 2) and beyond will change to “your spouse” or “your partner”. If the answer to question 101 (key is 101) “my spouse” or “my partner or fiancé,” then a reference to “your” from question number 102 (key is 102) through 191 (key is 191) will change to “your spouse” or “your partner”.

FIG. 11 shows a flowchart of an embodiment of a process of reconstructing a reflexive questionnaire based on a set of metadata according to the present disclosure. In particular, a process 1100 can be performed via the topology 100 of FIG. 1, in whole or in part.

In block 1102, a spreadsheet is populated with a set of rules and a version identifier. The spreadsheet is as described above. The spreadsheet is populated as described above. The set of rules is as described above. For example, the set of rules can include a logic, such as a Boolean logic or others. The version identifier includes a symbol or a set of symbols that can identify a version of the set of rules. For example, the version identifier can include at least one of an alphanumeric string, a barcode, an image, a sound, or others. For example, when embodied as the alphanumeric string, then the version identifier can be 2, 6/13/2012, Febuary_3_2014, 31082017, or others. For example, the version identifier can relate to or include a date the spreadsheet is populated with the set of rules. For example, the application server 112 can present a user interface to a client, such as the workstation 118 or the administrator terminal 120 or others, where the user interface is configured to receive the set of rules and the version identifier from the client. For example, the user interface can be presented as a web page or an app page. For example, the user interface can present the spreadsheet. The version identifier can be populated at a new line of the spreadsheet, such as above, within, or below the set of rules, or appended to an existing rule within the spreadsheet. Note that the version identifier can be executable or non-executable. Also, note that the spreadsheet can be configured to check for duplicates of the version identifier, such as when the spreadsheet is communicably link to a list of version identifiers, such as in a file or another data structure.

In block 1104, the set of rules is executed from the spreadsheet as described above.

In block 1106, a reflexive questionnaire is presented, where the reflexive questionnaire includes a set of questions generated based on the set of rules as described above. The set of questions is associated with the version identifier, such as via the version identifier being included in the reflexive questionnaire. For example, the application server 112 can present a user interface to a client, such as the client computing device 124, where the user interface contains the reflexive questionnaire with the set of questions generated based on the set of rules and where the set of questions is visually associated with the version identifier. For example, the user interface can be presented as a web page or an app page.

In block 1108, a set of answers to the set of questions is received as described above. For example, the application server 112 receive the set of answers from the client computing device 124. For example, the set of answers can include a set of textual data, a set of binary data, a set of image data, a set of sound data, or others.

In block 1110, the set of answers is stored as a set of metadata, which can be more efficient than storage in a PDF format. For example, the set of metadata can be hierarchical. For example, the application server 112 can store the set of answers as the set of metadata in the database server 114. The set of metadata can include descriptive metadata, structural metadata, administrative metadata, reference metadata, statistical metadata, or others. For example, the descriptive metadata describes a resource for purposes such as discovery and identification, and can include elements such as title, abstract, author, and keywords. For example, the structural metadata is metadata about containers of data and indicates how compound objects are put together, for example, how the set of answers are ordered to form hierarchies, and describes types, versions, relationships and other characteristics of digital materials. For example, the administrative metadata provides information to help manage a resource, such as when and how the resource was created, file type and other technical information, and who can access. For example, the reference metadata describes contents and quality of statistical data. For example, statistical metadata can describe processes that collect, process, or produce statistical data. For example, the set of metadata can include a set of metadata tags. For example, the set of metadata can be structured according to a concept using a well-defined metadata scheme, including: metadata standards and metadata models. Tools such as controlled vocabularies, taxonomies, thesauri, data dictionaries, and metadata registries can be used to apply standardization to the set of metadata. For example, the set of metadata can include a syntax, i.e., a set of rules created to structure fields/elements of the set of metadata. For example, a single metadata scheme may be expressed in a number of different markup or programming language, each of which may involve a different syntax. For example, the set of metadata may be expressed as plaintext, XML, HTML, XHTML, a Resource Description Framework (RDF), or others. For example, the set of metadata can include a metadata schemata that can be hierarchical in nature where relationships exist between metadata elements and elements are nested so that parent-child relationships exist between the elements. The metadata schemata can be one-dimensional, or linear, where each element is completely discrete from other elements and classified according to one dimension only. The metadata schemata can be two dimensional, or planar, where each element is completely discrete from other elements but classified according to two orthogonal dimensions. For example, the set of metadata can be hypermapped, i.e., where a metadata schemata exceed a planar depiction, a hypermapping technique enables a display and view of metadata according to chosen aspect and to serve special views. For example, the set of metadata can be stored in a single data structure or in a plurality of data structures, whether identical to or different from each other in structure or content. The set of metadata can be stored either internally, in same file or structure as data (this is also called embedded metadata), or externally, in a separate file or field from described data. For example, a data repository, such as the database server 114, can store the set of metadata detached from data, but can be designed to support embedded metadata approaches. For example, when stored, then the set of metadata can be searchable, such as via text queries, image queries, sound queries, or others. For example, the set of metadata can be stored in a human-readable or binary form.

In block 1112, the version identifier is associated with the set of metadata. For example, the application server 112 can store the version identifier as the set of metadata within the database server 114. For example, the version identifier can be stored as part of the set of metadata or internal thereto or external thereto but associated therewith, such as via a pointer, a reference, or others. For example, the version identifier can be stored within the set of metadata. Note that the version identifier can be associated with a plurality of sets of metadata. For example, the version identifier can associated with a second set of metadata distinct from the first set of metadata (a second set of answers).

In block 1114, a request is received, such as via the server 112 from a client, such as the workstation 118 or the administrator terminal 120 or others. For example, the server 112 can present a user interface to the client, where the user interface is configured to receive a request from the client. The request can include a command to recreate the reflexive questionnaire. The request can relate to the version identifier. For example, the spreadsheet is populated by a first client internal to a network as described above and the reflexive questionnaire is completed by a second client external to the network as described above and the request is placed by a third client internal to the network as described above.

In block 1116, the version identifier is located based on the request. For example, the application server 112 can query the database server 114 to search and locate the version identifier as stored therein.

In block 1118, the set of questions can be retrieved based on the version identifier. For example, the application server 112 can query the database server 114 or the spreadsheet to search, locate, and fetch the set of questions based on the version identifier.

In block 1120, the set of metadata can be retrieved based on the version identifier. For example, the application server 112 can query the database server 114 or the spreadsheet to search, locate, and fetch the set of metadata based on the version identifier.

In block 1122, the reflexive questionnaire with the set of questions and the set of answers is recreated. For example, the application server 112 can recreate the reflexive questionnaire with the set of questions based on the version identifier and the set of answers based on the set of metadata responsive to the request. For example, the reflexive questionnaire can be recreated in at least partially same visual format or content as presented in block 1106. For example, the reflexive questionnaire can be recreated into a data structure, such as a file, an array, a linked list, a web page, an app page, a PDF document, an HTML document, an XML document, or others.

In block 1124, an action can be taken based on the reflexive questionnaire as recreated, which can be responsive to the request of block 1114. For example, the application server 112 can serve the reflexive questionnaire to a client, such as the workstation 118 or the administrator terminal 120 or the client computing device 124 or others. For example, the application server 112 can request or command the database server 114 to save the reflexive questionnaire as recreated into a single record or a plurality of records. For example, the application server 112 can request or command an input device to generate an input or an output device to generate an output based on or inclusive of the reflexive questionnaire as recreated. For example, the input device can include a receiver, a transceiver, a network interface card, a memory card, a cursor or keyboard device, a camera, a microphone, or others. For example, the output device can include a transmitter, a transceiver, a network interface card, a memory card, a cursor or keyboard device, a display, a speaker, or others.

In block 1126, the reflexive questionnaire as recreated can be displayed, which can be responsive to the request of block 1114. For example, the application server 112 can serve the reflexive questionnaire as recreated for presenting to a client, such as the workstation 118 or the administrator terminal 120 or the client computing device 124 or others.

In block 1128, the reflexive questionnaire as recreated can be written to a data structure, such as a database record, a file, a document, a table, an array, or others. Such writing can be responsive to the request of block 1114. For example, the application server 112 can serve the reflexive questionnaire as recreated to the database server 114 for writing the reflexive questionnaire as recreated into a database record.

FIG. 12 shows a flowchart of an embodiment of a process of querying a data source during a presentation of a reflexive questionnaire with a set of questions generated based on a logic contained with a spreadsheet according to the present disclosure. In particular, a process 1200 can be performed via the topology 100 of FIG. 1, in whole or in part.

In block 1202, a format logic, a semantic logic, and a deduplication logic are created for a data source. For example, the application server 112 can present a user interface to a client, such as the workstation 118 or the administrator terminal 120 or others, where the user interface is configured to receive the format logic, the semantic logic, and the deduplication logic from the client, such as in a text format, such as in a Boolean format or others. For example, at least one of the format logic, the semantic logic, or the deduplication logic is configured for text processing. For example, the data source can include a single database or a plurality of databases, whether identical to or different from each other schemas. For example, the data source can be remote from the application server 112, but can be local as well.

The format logic enables a format translation or conversion of a set of data from a first format to a second format, where the set of data can include a set of text data, a set of image data, a set of sound data, or others. For example, the format logic enables a translation or conversion of a first alphanumeric string or acronym into a second alphanumeric string or acronym. For example, the format can be from shortening/abbreviating or lengthening/de-abbreviating or vice versa. For example, using the format logic, an alphanumeric string “APAP” or “Actmnpn” can be format translated or converted into an alphanumeric string “acetaminophen” or “AC” or others.

The semantic logic enables a semantic translation or conversion of a first semantic meaning of set of data set into a second semantic meaning of the set of data. For example, the semantic logic enables a semantic understanding of a plurality of alphanumeric strings in the set of data. For example, using the semantic logic, a plurality of alphanumeric strings “acetaminophen,” “panadol,” and “tylenol” can be semantically translated or converted to refer to a drug with a same active component.

The deduplication logic enables a removal of duplicates from the set of data. For example, the removal of duplicates can include deletion, marking or flagging as inactive or not-for-use, or others. For example, the set of data can contain the duplicates that can include a plurality of data items of same data type and same content. For example, using the deduplication logic, a plurality of alphanumeric strings “acetaminophen” can be analyzed and duplicates can be removed resulting in a single “acetaminophen” data item remaining in the set of data.

In block 1204, the format logic, the semantic logic, and the deduplication logic are saved, such via storing, recording, writing, or others, into a data structure. For example, the application server 112 can receive the format logic, the semantic logic, and the deduplication logic from the client, such as the workstation 118 or the administrator terminal 120 or others. Note that the data structure can be a single data structure, such as a file, a database record, a table, or others. Also, note that the data structure can be a plurality of data structures, where the format logic, the semantic logic, and the deduplication logic can be stored in a distributed manner in any correspondence, such as one-to-one, one-to-many, many-to-one, or many-to-many. For example, the data structures can include a first data structure, a second data structure, and a third data structure, where the first data structures the format logic, the second data structure stores the semantic logic, and the third data structure stores the deduplication logic. Note that the data structure can be identical to or different from each other in terms of structure or content.

In block 1206, a spreadsheet is populated with a set of rules. The spreadsheet is as described above. The spreadsheet is populated as described above. The set of rules is as described above. For example, the set of rules can include a logic, such as a Boolean logic or others. For example, the application server 112 can present a user interface to a client, such as the workstation 118 or the administrator terminal 120 or others, where the user interface is configured to receive the set of rules from the client. For example, the user interface can be presented as a web page or an app page. For example, the user interface can present the spreadsheet. For example, the data source can be assigned a network address, such as an IP address, a Media Access Control (MAC) address, a domain name, or others, and the network address can be programmed into the set of rules, such as via querying the data source based on the network address conditional to a specific response. Likewise, if querying the data source requires various parameters or criteria, then those can be programmed into the set of rules as well, inclusive of appropriate format conversions. For example, the set of rules can contain a logic whether the data source should be queried based on various answers to various questions generated by the set of rules and, if so, then what data source should be queried (if more than one) and what parameters or criteria should be used.

In block 1208, the set of rules is executed from the spreadsheet as described above.

In block 1210, a reflexive questionnaire is presented, where the reflexive questionnaire includes a set of questions generated based on the set of rules as described above. For example, the application server 112 can present a user interface to a client, such as the client computing device 124, where the user interface contains the reflexive questionnaire with the set of questions generated based on the set of rules. For example, the user interface can be presented as a web page or an app page. For example, the format logic, the semantic logic, and the deduplication logic can be created or saved by a first client internal to a network as described above and the spreadsheet is populated by a second client internal to the network as described above and the reflexive questionnaire is completed by a third client external to the network as described above.

In block 1212, the data source is queried. For example, the application server 112 can generate a query based on the set of rules being executed and send the query to the data source based on the set of rules being executed as the reflexive questionnaire is presented on the user interface of the client, such as the client computing device 124. For example, the application server 112 can be triggered to generate the query based on the set of rules as the set of rules is being executed. For example, the application server 112 can generate the query based on a specific input or answer or a group of inputs or a group of answers on the reflexive questionnaire and then the query can be sent as programmed based on the set of rules, which can include fusing the group of inputs or answers. For example, the application server 112 can generate the query based on a specific input or answer pulled, in real-time, without user prompting, from the reflexive questionnaire during presentation on the user interface of the client, such as the client computing device 124. Likewise, the application server 112 can push a query to the data source, in real-time, without user prompting, as the reflexive questionnaire is presented on the user interface of the client, such as the client computing device 124.

In block 1214, a set of data is received from the data source. For example, the set of data can include a result to the query submitted by the application server 112 to the data source. For example, the result can include text, image, sound, file, document, data structure, stings, a JavaScript Object Notation (JSON) object, or other types of information. For example, when the data source includes a plurality of databases configured according to a plurality of schemas, where the result includes a plurality of results and the schemas are different from each other, then the results can at least partially overlap each other in terms of content or not overlap each other in terms of content.

In block 1216, the set of data received from the data source is translated or converted based on the format logic, the semantic logic, and deduplication logic stored in the data structure. For example, the application server 112 can process the set of data based on the format logic, the semantic logic, and deduplication logic stored in the data structure such that the set of data received from the data source is translated or converted for subsequent processing relative to or for the reflexive questionnaire currently being presented on the user interface of the client, such as the client computing device 124.

In block 1218, the reflexive questionnaire is updated based on the set of data as translated or converted based on the format logic, the semantic logic, and deduplication logic stored in the data structure. For example, the application server 112 can push an update to the reflexive questionnaire, in real-time, without user prompting, as the reflexive questionnaire is presented on the user interface of the client, such as the client computing device 124. The update can include a new question or a new group of questions or updating an already presented question or an already presented group of questions.

In block 1220, a set of answers to the set of questions is received as described above. For example, the application server 112 receive the set of answers from the client computing device 124. For example, the set of answers can include a set of textual data, a set of binary data, a set of image data, a set of sound data, or others. For example, the set of answers can be based on the reflexive questionnaire as updated.

In block 1222, the set of answers is recorded into a record of a database. For example, when the record includes a set of fields, then the set of answers can be stored in the set of fields. For example, the record can be hosted via the database server 114.

In block 1224, the set of answers, as accessed via the record, is evaluated against a threshold. For example, the threshold can include a set of data and the set of answers can be evaluated against the set of data. The set of data can include text, image, sound, or other content. For example, the application server 112 can request retrieval of the set of answers via the database server 114 and evaluate the set of answers against the set of data. For example, such evaluation can result in a yes or no answer, true or false answer, a needs further review answer, or other answers.

In block 1226, an action is taken based on the set of answers satisfying or not satisfying a threshold. For example, the application server 112 can serve the reflexive questionnaire to a client, such as the workstation 118 or the administrator terminal 120 or the client computing device 124 or others. For example, the application server 112 can request or command an input device to generate an input or an output device to generate an output based on or inclusive of the reflexive questionnaire. For example, the input device can include a receiver, a transceiver, a network interface card, a memory card, a cursor or keyboard device, a camera, a microphone, or others. For example, the output device can include a transmitter, a transceiver, a network interface card, a memory card, a cursor or keyboard device, a display, a speaker, or others.

In block 1228, the record storing the set of answers is marked based on the set of answers satisfying the threshold. For example, such marking can include the application server 112 causing flagging of the record as active or yes or others. For example, the record can be marked by content, such as via the application server 112 causing a modification of a content the record, or the record can be marked by via the application server 112 causing a movement or copying the record into another logical entity within the database server 114, such as another table or others.

In block 1230, the record storing the set of answers is marked based on the set of answers not satisfying the threshold. For example, such marking can include the application server 112 causing flagging of the record as inactive or no or others. For example, the record can be marked by content, such as via the application server 112 causing a modification of a content the record, or the record can be marked by via the application server 112 causing a movement or copying the record into another logical entity within the database server 114, such as another table or others.

In block 1232, an action recommendation can be presented to a client, such as the workstation 118 or the administrator terminal 120 or the client computing device 124 or others. For example, the application server 112 can present the action recommendation based on the set of answers satisfying or not satisfying the threshold. For example, the application server 112 can generate the action recommendation based on analyzing the set of answers against a recommendation engine or application or logic hosted via or accessible to the application server 112. For example, the action recommendation can include text, image, sound, hyperlink, social media post, or others. For example, the action recommendation can include a content, which can be user interactive, indicative of why the threshold was or was not satisfied or what can be done to satisfy or not satisfy the threshold or others.

In block 1234, a status message can be sent to a client, such as the workstation 118 or the administrator terminal 120 or the client computing device 124 or others. For example, the application server 112 can generate the status message based on the set of answers satisfying or not satisfying the threshold. For example, the application server 112 can generate the status message based on analyzing the set of answers against a status engine or application or logic hosted via or accessible to the application server 112. For example, the status message can include text, image, sound, hyperlink, social media post, or others. For example, the status message can include a content, which can be user interactive, indicative of prior status, current status, future status, timeline, timeline position, or others.

FIG. 13 shows a flowchart of an embodiment of a process of modularizing logic statements in a spreadsheet according to the present disclosure. In particular, a process 1300 can be performed via the topology 100 of FIG. 1, in whole or in part.

In block 1302, a first spreadsheet is populated with a first set of logic received from a first client as described above. The first spreadsheet is as described above. The first set of logic is as described above. For example, the first set of logic can include a logic, such as a Boolean logic or others. For example, the first set of logic can operate as a callable function, subroutine, object, module, or others. For example, the first set of logic can generate a set of questions specific to a topic, such as a set of demographic information, a set of personal contact information, or others. The first set of logic is received as described above. The first client is as described above. For example, the application server 112 can present the spreadsheet to the first client, such as the workstation 118 or the administrator terminal 120 or others.

In block 1304, a name is assigned to the first spreadsheet as described above. For example, the name can include an alphanumeric string, a sound, an image, a barcode, or others. For example, the name can include a pointer, a reference, an identifier, or others. For example, the name can be manually or automatically generated, such as including a date or time stamp, a default name, or others. For example, the first client can input the name or select the name from a list of possible or potential names, such as via an autosuggest function in order to avoid naming conflicts. For example, the application server 112 can automatically assign the name upon creation of the first spreadsheet, with the name potentially being subsequently modifiable via the first client.

In block 1306, the first spreadsheet is saved with the first set of logic via the first client requesting this save or via auto-save. The first spreadsheet is saved with the name. For example, the application server 112 can save the first spreadsheet with the first set of logic via the first client requesting the application server 112 to save the first spreadsheet with the first set of logic or via the application server 112 periodically auto-saving the first spreadsheet, such as every 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, or more seconds or minutes or hours or others.

In block 1308, the name is shared with a second client. For example, the application server 112 can share the name with the second client, such as the workstation 118 or the administrator terminal 120 or others. For example, the name can be shared via at least one of a file, a communication message, a physical medium, or a logic configured to at least one of grant or deny an access to the name. For example, the file can include a data file, such as a PDF file, a text file, an MS Office file, an image file, a sound file, or others. For example, the MS office file can include a document file, a spreadsheet file, a presentation file, or others. For example, the file can include an executable file, an archive file, a dynamic-link-library (DLL) file, a settings file, or others. For example, the communication message can include an email, a short message service (SMS) message, a text message, an over-the-top (OTT) message, a social media service message, a chat message, an interactive voice response (IVR) phone call message, or others. For example, the physical medium can include a physical document, which can include paper, plastic, metal, wood, rubber, or others. For example, the physical document can include a letter, a printout, a catalog, a flyer, a newspaper, a magazine, a book, a pamphlet, a binder, or others. For example, the physical medium can include a memory, whether mechanical, electrical, or others. For example, the physical medium can include a flash drive or others. For example, the logic configured to at least one of grant or deny an access to the name can include a hardware arrangement or component thereof, such as a password or biometric-based container or others, a software arrangement or component thereof, such as a module, an object, a function, or others, or others. For example, the logic configured to at least one of grant or deny an access to the name based on the second client or user thereof being allowed or forbidden to access the name based on various parameters or criteria.

In block 1310, a second spreadsheet is populated with a second set of logic inclusive of the name sourced from the second client. The second spreadsheet is as described above. The second spreadsheet is populated as described above. The second set of logic is as described above. For example, the second set of logic can include a logic, such as a Boolean logic or others.

Where programmatically desired in point of execution, such as at a desired reflexive questioning section or others, the second set of logic can be created, modified, edited, or input to include, call, point, or refer to the name corresponding to the first spreadsheet. For example, the name can be autocompleted based on a set of names corresponding to a set of spreadsheets stored in a predefined file directory or folder or data source, which can be changed to another file directory or folder or data source. As such, if the second set of logic is executed and this execution reaches the name in the second set of logic, then a presence of the name can enable the second spreadsheet to locate the first spreadsheet and open the first spreadsheet for appropriate access. Then, the first spreadsheet can be read or imported into the second spreadsheet or the first set of logic can be copied from the first spreadsheet to the second spreadsheet to logically replace or append or associate with the name. Then, the first set of logic is executed when point of execution reaches the name and the first spreadsheet can be closed. This technique can enable the presence of the name to function as a trigger or flag, at a relevant point of execution, for an incorporation by reference via the name, where the incorporation by reference enables execution of the first set of logic from the first spreadsheet in the second set of logic in the second spreadsheet. For example, the name can function as a virtual logic statement for the first set of logic. The incorporation can be at programming time, compilation time, execution time, or others. For example, the second spreadsheet can be configured to display the first set of logic after the second spreadsheet is populated with the name, which can replace the name or follow the name. This feature can be a default feature. Likewise, the second spreadsheet cane configured to hide the first set of logic responsive to a hide request from the second client, with the hide request being activated via a menu or setting of the spreadsheet. For example, the second spreadsheet can be configured to hide the first set of logic after the second spreadsheet is populated with the name, which enables programming simplicity. This feature can be a default feature. Likewise, the second spreadsheet can be configured to show the first set of logic responsive to a show request from the second client, with the show request being activated via a menu or setting of the spreadsheet. Note that the show request and the hide request can correspond to two corresponding different icons in the menu or a single icon in the menu that enables binary action upon activation or deactivation.

In block 1312, the second spreadsheet is saved with the second set of logic. For example, the application server 112 can store the first spreadsheet and the second spreadsheet remote from each other or local to each other, where the second spreadsheet contains the second set of logic with the name of the first spreadsheet. Note that the first set of logic has less, equal, more logic statements than the second set of logic.

In block 1314, a user interface is presented to a third client. The user interface contains a reflexive questionnaire containing a set of questions generated based on the second set of logic inclusive of the name when the second set of logic is executed. For example, the application server 112 can execute the second set of logic from the second spreadsheet such that the first set of logic is called based on the name and executed based on the name during the execution of the second set of logic. The user interface can be presented on a web page served to the third client, such as the client computing device 124 or others. The reflexive questionnaire is as described above. The web page is presented in a client browser as described above. The set of questions is as described above.

In block 1316, a set of answers to the set of questions is received from the third client as described above. For example, the application server 112 can store the set of answers in a database record, such as via the database server 114. For example, the set of answers can include a set of textual data, a set of binary data, a set of image data, a set of sound data, or others. For example, when the database record includes a set of fields, then the answers can be stored in the set of fields.

In block 1318, the set of answers is evaluated against a threshold. Note that the threshold can be a single threshold or a plurality of thresholds. For example, the threshold can include a set of data and the set of answers can be evaluated against the set of data. The set of data can include text, image, sound, or other content. For example, the application server 112 can request retrieval of the set of answers via the database server 114 and evaluate the set of answers against the set of data. For example, such evaluation can result in a yes or no answer, true or false answer, a needs further review answer, or other answers.

In block 1320, a first action is taken based on the set of answers satisfying the threshold and a second action is taken based on the set of answers not satisfying the threshold. For example, the application server 112 can mark the database record as satisfying the threshold or not satisfying the threshold based on the set of answers satisfying the threshold or not satisfying the threshold respectively. For example, the application server 112 can serve the reflexive questionnaire to a client, such as the workstation 118 or the administrator terminal 120 or the client computing device 124 or others. For example, the application server 112 can request or command an input device to generate an input or an output device to generate an output based on or inclusive of the reflexive questionnaire. For example, the input device can include a receiver, a transceiver, a network interface card, a memory card, a cursor or keyboard device, a camera, a microphone, or others. For example, the output device can include a transmitter, a transceiver, a network interface card, a memory card, a cursor or keyboard device, a display, a speaker, or others.

In block 1322, the record is marked as satisfying the threshold as explained above. For example, such marking can include the application server 112 causing flagging of the database record as active or yes or others. For example, the record can be marked by content, such as via the application server 112 causing a modification of a content the record, or the record can be marked by via the application server 112 causing a movement or copying the record into another logical entity within the database server 114, such as another table or others.

In block 1324, the record is marked as not satisfying the threshold as explained above. For example, such marking can include the application server 112 causing flagging of the record as inactive or no or others. For example, the record can be marked by content, such as via the application server 112 causing a modification of a content the record, or the record can be marked by via the application server 112 causing a movement or copying the record into another logical entity within the database server 114, such as another table or others.

In block 1326, an action recommendation is presented to a client as described above. The client can be the workstation 118 or the administrator terminal 120 or the client computing device 124 or others. For example, the application server 112 can present the action recommendation based on the set of answers satisfying or not satisfying the thresholds. For example, the application server 112 can generate the action recommendation based on analyzing the set of answers against a recommendation engine or application or logic hosted via or accessible to the application server 112. For example, the action recommendation can include text, image, sound, hyperlink, social media post, or others. For example, the action recommendation can include a content, which can be user interactive, indicative of why the threshold was or was not satisfied or what can be done to satisfy or not satisfy the threshold or others.

In block 1328, a status message is sent to a client as described above. The client can be the workstation 118 or the administrator terminal 120 or the client computing device 124 or others. For example, the application server 112 can generate the status message based on the set of answers satisfying or not satisfying the threshold. For example, the application server 112 can generate the status message based on analyzing the set of answers against a status engine or application or logic hosted via or accessible to the application server 112. For example, the status message can include text, image, sound, hyperlink, social media post, or others. For example, the status messages can include a content, which can be user interactive, indicative of prior status, current status, future status, timeline, timeline position, or others.

FIG. 14 shows a flowchart of an embodiment of a method for presenting a plurality of reflexive questionnaires on a plurality of web pages having a plurality of domain names assigned thereto according to this disclosure. In particular, a process 1400 can be performed via the topology 100 of FIG. 1, in whole or in part.

In block 1402, a spreadsheet is open for modification as described above. The spreadsheet is as described above.

In block 1404, the spreadsheet is populated with a plurality of rules for a plurality of web pages associated with a plurality of domain names assigned thereto. The spreadsheet is populated as described above. The rules are as described above. For example, the rules can include a logic, such as a Boolean logic or others. For example, the application server 112 can present a user interface to a client, such as the workstation 118 or the administrator terminal 120 or others, where the user interface is configured to receive the rules from the client. For example, the user interface can be presented as a web page or an app page. For example, the user interface can present the spreadsheet.

The rules can correspond to the domain names in various ways, such as a one-to-one correspondence, one-to-many correspondence, many-to-one correspondence, or many-to-many correspondence. For example, at least one of the domain names can include an alphabetic or alphanumeric string inclusive of grammar signs, such as dashes, commas, or others. For example, the rules can be grouped based on the domain names, such as based on clients accessing the web pages associated with the domain names. For example, a first set of rules can apply to a first client accessing a first web page associated with a first domain name and a second set of rules can apply to a second client accessing a second web page associated with a second domain name. Likewise, some rules can be shared between the first web page associated with the first domain name and the second web page associated with the second domain name, i.e., some rules may apply to the first client accessing the first web page associated with the first domain name and to the second client accessing the second web page associated with the second domain name. For example, the rules can be programmed to determine which domain name was used to access a web page containing a reflexive questionnaire with a set of questions generated based on the set of rules. For example, such determination can be in real-time and without user prompting. For example, the domain names name can include www.xyz.com or www.abc.de.net or a network address, such as an IP address, a Media Access Control (MAC) address, or others, and the domain names can be programmed into the rules, such as via presenting certain questions based on certain clients accessing certain web pages associated with certain domain names. Note that at least one of the domain names (hostname) may be used to identify an IP address based on a translation by a Domain Name System (DNS) server or a hosts tile from an alphabetic (lower or upper case) or alphanumeric string into an IP address, whether the DNS server or the host file is local to or remote from the spreadsheet. Also, note that at least one of the domain names can include a top level domain (TLD), whether generic or country code. Moreover, note that at least one of the domain names can include a second-level or third-level or n-level domain names and can be concatenated and delimited by dots. Additionally, note that prefixes, such as ftp or www or mail can involve a particular service. For example, the application server 112 can present the spreadsheet to a client, such as the workstation 118 or the administrator terminal 120 or others, where the spreadsheet is configured to receive a plurality of logic rules for a plurality of web pages associated with a plurality of domain names, where the domain names are different from each other. For example, the logic rules can be a single set of logic rules for the domain names. For example, the logic rules can include a first group of logic rules and a second group of logic rules, where the web pages include a first web page and a second web page, where the domain names include a first domain name associated with the first web page and a second domain name associated with the second web page, where the first group of logic rules applies to the first domain name and the second group of logic rules application to the second domain name. Moreover, the logic rules can include a third group of logic rules that applies or avoids applying to the first domain name and the second domain name. Additionally, at least one of the web pages can be a landing page for at least one of the domain names when that domain name is entered into the browser of the client.

In block 1406, the spreadsheet as modified is saved as described above.

In block 1408, the rules from the spreadsheet are executed as described above. For example, the application server 112 receives the logic rules from the client, populates the spreadsheet with the logic rules, and executes the logic rules from the spreadsheet.

In block 1410, a plurality of reflexive questionnaires are presented on the web pages associated with the domain names. The reflexive questionnaires are described above. The web pages are presented in client browsers. The reflexive questionnaires may present identical or non-identical question content or formatting based on the domain names. For example, a reflexive questionnaire A with question content A is presented on web page A associated with domain name A (www.ab.com), whereas a reflexive questionnaire B with question content B is presented on web page B associated with domain name B (www.cd.ef.org), with the domain name A and the domain name B being different from each other, whether IP addresses as translated are different or identical. However, note that the reflexive questionnaire A presented on web page A associated with domain name A may share or avoid sharing some questions with reflexive questionnaire B presented on web page B associated with domain name B. For example, the application server 112 presents a plurality of reflexive questionnaires on the web pages associated with the domain names as the web pages are accessed by a plurality of browsers, where the reflexive questionnaires include a plurality of questions generated based on the logic rules.

In block 1412, a plurality of answers to the questions are received from the reflexive questionnaires as explained above. For example, the application server 112 receive the set of answers from the client computing device 124. For example, the set of answers can include a set of textual data, a set of binary data, a set of image data, a set of sound data, or others.

In block 1414, the answers are recorded into a plurality of records of a database as explained above. For example, the answers can be stored in the records. For example, when the records includes a set of fields, then the answers can be stored in the set of fields. For example, the records can be hosted via the database server 114.

In block 1416, the answers from the records are evaluated against a plurality of thresholds as explained above. Note that the thresholds can be a single threshold but manifested as copies thereof or there can be many different thresholds. For example, at least one of the thresholds can include a set of data and the set of answers can be evaluated against the set of data. The set of data can include text, image, sound, or other content. For example, the application server 112 can request retrieval of the answers via the database server 114 and evaluate the answers against the set of data. For example, such evaluation can result in a yes or no answer, true or false answer, a needs further review answer, or other answers.

In block 1418, a plurality of actions are taken based on the answers satisfying or not satisfying the thresholds as explained above. For example, the application server 112 can mark the database records as satisfying the threshold or not satisfying the threshold based on the answers satisfying the threshold or not satisfying the threshold respectively. For example, the application server 112 can serve the reflexive questionnaire to a client, such as the workstation 118 or the administrator terminal 120 or the client computing device 124 or others. For example, the application server 112 can request or command an input device to generate an input or an output device to generate an output based on or inclusive of the reflexive questionnaire. For example, the input device can include a receiver, a transceiver, a network interface card, a memory card, a cursor or keyboard device, a camera, a microphone, or others. For example, the output device can include a transmitter, a transceiver, a network interface card, a memory card, a cursor or keyboard device, a display, a speaker, or others. As such, a developer can code different front ends, such as havenlife.com and massmutual.com. For example, the developer can program to call a first set of rules for havenlife.com and a second set of rules for massmutual.com, thereby effectively reducing a need to create rules each time, although some, none, or all rule overlap or rule uniqueness is possible in any manner.

In block 1420, the records that satisfy the thresholds are marked accordingly as explained above. For example, such marking can include the application server 112 causing flagging of the records as active or yes or others. For example, the records can be marked by content, such as via the application server 112 causing a modification of a content the records, or the records can be marked by via the application server 112 causing a movement or copying the records into another logical entity within the database server 114, such as another table or others.

In block 1422, the records that do not satisfy the thresholds are marked accordingly as explained above. For example, such marking can include the application server 112 causing flagging of the records as inactive or no or others. For example, the records can be marked by content, such as via the application server 112 causing a modification of a content the records, or the record can be marked by via the application server 112 causing a movement or copying the records into another logical entity within the database server 114, such as another table or others.

In block 1424, a plurality of action recommendations are presented to a client as explained above. The client can be the workstation 118 or the administrator terminal 120 or the client computing device 124 or others. For example, the application server 112 can present the action recommendations based on the answers satisfying or not satisfying the thresholds. For example, the application server 112 can generate the action recommendations based on analyzing the answers against a recommendation engine or application or logic hosted via or accessible to the application server 112. For example, the action recommendations can include text, image, sound, hyperlink, social media post, or others. For example, the action recommendations can include a content, which can be user interactive, indicative of why the thresholds was or was not satisfied or what can be done to satisfy or not satisfy the thresholds or others. For example, the application server 112 can present an action recommendation to at least one of the browsers based on a subset of the answers not satisfying the threshold, where the subset is associated with the at least one of the browsers.

In block 1426, a plurality of status messages are sent to a client as explained above. The client can be the workstation 118 or the administrator terminal 120 or the client computing device 124 or others. For example, the application server 112 can generate the status messages based on the answers satisfying or not satisfying the thresholds. For example, the application server 112 can generate the status messages based on analyzing the answers against a status engine or application or logic hosted via or accessible to the application server 112. For example, the status messages can include text, image, sound, hyperlink, social media post, or others. For example, the status messages can include a content, which can be user interactive, indicative of prior status, current status, future status, timeline, timeline position, or others. For example, the application server 112 can send a status message to at least one of the browsers based on a subset of the answers satisfying the threshold, where the subset is associated with the at least one of the browsers.

FIG. 15 shows a flowchart of an embodiment of a method for outputting a value based on a plurality of worksheets according to this disclosure. FIGS. 16A-16D show a plurality of embodiments of a plurality of screenshots of a plurality of worksheets according to this disclosure. In particular, a process 1500 can be performed via the topology 100 of FIG. 1, in whole or in part. The application server 112 can run an engine (e.g., workflow engine, calculation engine, machine learning engine, and business rules engine) programmed to perform any functionality described in this disclosure. For example, the engine can be programmed to perform at least some of the process 1500. For example, the engine can be started, paused, stopped, optimized, or others.

In block 1502, a base worksheet with a plurality of keys and a plurality of logic statements is created. This creation can occur locally via the workstation 118 or the administrator terminal 120 or the client computing device 124 or remotely via the workstation 118 or the administrator terminal 120 or the client computing device 124 interfacing with the application server 112 over the LAN 116. For example, an insurance company software developer can operate the workstation 118 and interface with the application server 112 over the LAN 116 to develop the base worksheet as a starting basis for a set of insurance company products (e.g., life insurance, property insurance). When the set of insurance company products shares a common mathematical foundation, then the base worksheet can provide for such programming framework.

Upon creation, the base worksheet is assigned a document identifier and a version identifier, whether via the workstation 118, the administrator terminal 120, the client computing device 124 or the application server 112. The document identifier and the version identifier can be internal or external to the base worksheet. For example, the document identifier and the version identifier can include cellular content of the base worksheet, metadata of the base worksheet, name of the base worksheet, property of the base worksheet, or others. For example, the document identifier and the version identifier can be a single alphanumeric string or be separate and distinct pieces of information. For example, the document identifier and the version identifier can be manifested as 1.0 or A_2 or one-two or other formats. The base worksheet can be stored in a record of a database and retrievable based on its document identifier and version identifier.

One example of the base worksheet (Calc@Base) is shown in FIG. 16A. In particular, under a heading “key” in column A, the keys are listed from cell A2 to cell A23. The keys can include any alphanumeric syntax inclusive of text, numbers, literary characters (e.g., underscore, commas, exclamation points, periods), or other alphanumeric forms of content. Likewise, the base worksheet includes a heading “expression” in column B where the logic statements are listed from cell B2 to cell B23. The logic statements can include any alphanumeric syntax inclusive of text, numbers, literary characters, format-specific-syntax, or other alphanumeric forms of content. The logic statements can include any form of logic inclusive of variables, conditionals, Booleans, function calls, or other forms of programming logic. Some of the logic statements (e.g., B4, B20, B21) can be empty or have a 0 value. The keys one-to-one correspond to the logic statements (e.g., key-to-logic statement pairs). For example, the key contained in the A2 cell one-to-one corresponds to the logic statement contained in the B2 cell. Note that the logic statement of the B2 cell includes a lookup function call (lu) calling a worksheet (Premium) and then a tab (Info) of that worksheet by using a # sign and then calling a key (bands) by using ‘ ’ within ( ) and multiplying that by a variable (_v_face_amount). Although this form of logic is illustrative, other forms of programming commands, sequences, or logic are possible. Note that the base worksheet can be stored in a JSON format.

In block 1504, a base function worksheet with a plurality of keys and a plurality of values is created. This creation can occur locally via the workstation 118 or the administrator terminal 120 or the client computing device 124 or remotely via the workstation 118 or the administrator terminal 120 or the client computing device 124 interfacing with the application server 112 over the LAN 116. For example, an insurance company software developer can operate the workstation 118 and interface with the application server 112 over the LAN 116 to develop the base function worksheet as a starting value set for a set of insurance company products (e.g., life insurance, property insurance). When the set of insurance company products shares a common mathematical value foundation, then the base function worksheet can provide for such programming framework. Note that the base function worksheet can be created before, during, or after the base worksheet. Further, note that the base worksheet and the base function worksheet can be included a single spreadsheet, whether local or network-based, or distributed among a plurality of spreadsheets, whether local or network-based, in any manner (e.g., one-to-one, one-to-many, many-to-one, many-to-many). Note that the keys of the base worksheet and the keys of the base function worksheet can be semantically identical or non-identical to each other. Likewise, the logic statements of the base worksheet and the logic statements of the base function worksheet can be semantically identical or non-identical to each other.

Upon creation, the base function worksheet is assigned a document identifier and a version identifier, whether via the workstation 118, the administrator terminal 120, the client computing device 124 or the application server 112. The document identifier and the version identifier can be internal or external to the base function worksheet. For example, the document identifier and the version identifier can include cellular content of the base function worksheet, metadata of the base function worksheet, name of the base function worksheet, property of the base function worksheet, or others. For example, the document identifier and the version identifier can be a single alphanumeric string or be separate and distinct pieces of information. For example, the document identifier and the version identifier can be manifested as 1.0 or A_3 or one-two or other formats. The base function worksheet can be stored in a record of a database and retrievable based on its document identifier and version identifier.

One example of the base function worksheet (Input@Base) is shown in FIG. 16C. In particular, under a heading “key” in column A, the keys are listed from cell A2 to cell A6. The keys can include any alphanumeric syntax inclusive of text, numbers, literary characters (e.g., underscore, commas, exclamation points, periods), or other alphanumeric forms of content. Likewise, the base function worksheet includes a heading “value” in column B where the values are listed from cell B2 to cell B6. The values can include any alphanumeric syntax inclusive of text, numbers, literary characters, words, format-specific syntax, logic, or other alphanumeric forms of content. For example, the cell B3 and the cell B4 show dates in various different formats. Likewise, the cell B5 contains the value in words, whereas the cells B2 and B6 contains the values in numbers. Note that the values can be empty or have a 0 value. The keys one-to-one correspond to the values (e.g., key-to-value pairs). For example, the key contained in the A2 cell one-to-one corresponds to the value contained in the B2 cell. Note that the base function worksheet can be stored in a JSON format.

In block 1506, the base worksheet (e.g., as shown in FIG. 16A) is linked with the base function worksheet (e.g., as shown in FIG. 16C) or vice versa. This linking take place by respective document identifiers and version identifiers. The base worksheet can be linked with the base function worksheet based on a one-to-one, one-to-many, many-to-one, or many-to-many correspondence. This linking can occur locally via the workstation 118 or the administrator terminal 120 or the client computing device 124 or remotely via the workstation 118 or the administrator terminal 120 or the client computing device 124 interfacing with the application server 112 over the LAN 116. For example, an insurance company software developer can operate the workstation 118 and interface with the application server 112 over the LAN 116 to link the base worksheet and the base function worksheet to each other as a starting code set for a set of insurance company products (e.g., life insurance, property insurance). When the set of insurance company products shares a common calculation foundation, then the base worksheet and the base function worksheet can provide for such programming framework. For example, the base worksheet and the base function worksheet can be linked via a callable or identifiable JSON object containing the respective document identifiers and version identifiers. For example, the base worksheet and the base function worksheet can be linked via another identifier or a primary key or a hash table in a data organization or structure (e.g., data warehouse, database, array) storing the base worksheet and the base function worksheet or pointers or references thereto. For example, the base worksheet and the base function worksheet can be linked by merging of their respective document identifiers and version identifiers (e.g., 1.1 (base worksheet)+2.2 (base function worksheet)=1.1.2.2 where first two decimal places correspond to the base worksheet and the last two places correspond to the base function worksheet. Note that this format and delimiters are illustrative and other formats (e.g., alphabetic) and delimiters (e.g., underscore, exclamation points, commas) are possible.

In block 1508, a custom worksheet with a plurality of keys and a plurality of logic statements is created, although less than plurality for each is possible as well. This creation can occur locally via the workstation 118 or the administrator terminal 120 or the client computing device 124 or remotely via the workstation 118 or the administrator terminal 120 or the client computing device 124 interfacing with the application server 112 over the LAN 116. For example, an insurance company software developer can operate the workstation 118 and interface with the application server 112 over the LAN 116 to develop the custom worksheet as a point of modification or customization of the base worksheet for a custom or specific insurance company product (e.g., life insurance, property insurance). Note that the custom worksheet can be created before, during, or after the base worksheet or the base function worksheet. Further, note that the custom worksheet, the base worksheet, and the base function worksheet can be included a single spreadsheet, whether local or network-based, or distributed among a plurality of spreadsheets, whether local or network-based, in any manner (e.g., one-to-one, one-to-many, many-to-one, many-to-many).

Upon creation, the custom worksheet is assigned a document identifier and a version identifier, whether via the workstation 118, the administrator terminal 120, the client computing device 124 or the application server 112. The document identifier and the version identifier can be internal or external to the custom worksheet. For example, the document identifier and the version identifier can include cellular content of the custom worksheet, metadata of the custom worksheet, name of the custom worksheet, property of the custom worksheet, or others. For example, the document identifier and the version identifier can be a single alphanumeric string or be separate and distinct pieces of information. For example, the document identifier and the version identifier can be manifested as 1.0 or F_2 or one-two or other formats. The custom worksheet can be stored in a record of a database and retrievable based on its document identifier and version identifier.

One example of the custom worksheet (Calc@Death) is shown in FIG. 16B. In particular, under a heading “key” in column A, the keys are listed from cell A2 to cell A6. The keys can include any alphanumeric syntax inclusive of text, numbers, literary characters (e.g., underscore, commas, exclamation points, periods), or other alphanumeric forms of content. Some of the keys (e.g., B2, B4, B6) can include delimiters (e.g., periods, commas, underscores). Likewise, the custom worksheet includes a heading “expression” in column B where the logic statements are listed from cell B2 to cell B6. The logic statements can include any alphanumeric syntax inclusive of text, numbers, literary characters, format-specific-syntax, or other alphanumeric forms of content. The logic statements can include any form of logic inclusive of variables, conditionals, Booleans, function calls, or other forms of programming logic. Some of the logic statements (e.g., B2, B4, B6) can be empty or have a 0 value. The keys one-to-one correspond to the logic statements (e.g., key-to-logic statement pairs). For example, the key contained in the A3 cell one-to-one corresponds to the logic statement contained in the B3 cell. Note that the logic statement of the B3 cell includes a lookup function call (lu) calling a worksheet (Premium) and then a tab (Rate) of that worksheet by using a # sign and then calling various keys (within parenthesis) by using ‘ ’ within 0 and multiplying that by a variable (_v_policy_year) from cell B3 of the base worksheet. Although this form of logic is illustrative, other forms of programming commands, sequences, or logic are possible. Note that the custom worksheet can be stored in a JSON format.

In block 1510, a custom function worksheet with a plurality of keys and a plurality of values is created. This creation can occur locally via the workstation 118 or the administrator terminal 120 or the client computing device 124 or remotely via the workstation 118 or the administrator terminal 120 or the client computing device 124 interfacing with the application server 112 over the LAN 116. For example, an insurance company software developer can operate the workstation 118 and interface with the application server 112 over the LAN 116 to develop the custom function worksheet as a custom or specific value set for a custom or specific insurance company product (e.g., life insurance, property insurance). Note that the custom function worksheet can be created before, during, or after the custom worksheet, the base worksheet, or the base function worksheet. Further, note that the custom function worksheet, the custom worksheet, the base function worksheet, and the base function worksheet can be included a single spreadsheet, whether local or network-based, or distributed among a plurality of spreadsheets, whether local or network-based, in any manner (e.g., one-to-one, one-to-many, many-to-one, many-to-many). Note that the keys of the custom worksheet and the keys of the base worksheet can be semantically identical or non-identical to each other. Likewise, the logic statements of the custom worksheet and the logic statements of the base worksheet can be semantically identical or non-identical to each other.

Upon creation, the custom function worksheet is assigned a document identifier and a version identifier, whether via the workstation 118, the administrator terminal 120, the client computing device 124 or the application server 112. The document identifier and the version identifier can be internal or external to the custom function worksheet. For example, the document identifier and the version identifier can include cellular content of the custom function worksheet, metadata of the custom function worksheet, name of the custom function worksheet, property of the custom function worksheet, or others. For example, the document identifier and the version identifier can be a single alphanumeric string or be separate and distinct pieces of information. For example, the document identifier and the version identifier can be manifested as 1.0 or 4_! or one-two or other formats. The custom function worksheet can be stored in a record of a database and retrievable based on its document identifier and version identifier.

One example of the custom function worksheet (Input@Death) is shown in FIG. 16D. In particular, under a heading “key” in column A, there are no keys listed, although that is possible. The keys can include any alphanumeric syntax inclusive of text, numbers, literary characters (e.g., underscore, commas, exclamation points, periods), or other alphanumeric forms of content. Since there are no keys listed in column A of the custom function worksheet, then the custom worksheet is processed as is (e.g., modifying the base worksheet as sourced from the base function worksheet) without being sourced from the custom function worksheet. Likewise, the custom function worksheet includes a heading “value” in column B, but there are no values listed, although that is possible. The values can include any alphanumeric syntax inclusive of text, numbers, literary characters, words, format-specific syntax, logic, or other alphanumeric forms of content. The keys one-to-one correspond to the values (e.g., key-to-value pairs). Again, since there are no keys listed in column A and therefore no reference system through which the values can be called, even if the values were listed in column B of the custom function worksheet, then the custom worksheet is processed as is (e.g., modifying the base worksheet as sourced from the base function worksheet) without being sourced from the custom function worksheet. Note that the custom function worksheet can be stored in a JSON format.

In block 1512, the custom worksheet (e.g., as shown in FIG. 16B) is linked with the custom function worksheet (e.g., as shown in FIG. 16D) or vice versa. This linking take place by respective document identifiers and version identifiers. The custom worksheet can be linked with the custom function worksheet based on a one-to-one, one-to-many, many-to-one, or many-to-many correspondence. This linking can occur locally via the workstation 118 or the administrator terminal 120 or the client computing device 124 or remotely via the workstation 118 or the administrator terminal 120 or the client computing device 124 interfacing with the application server 112 over the LAN 116. For example, an insurance company software developer can operate the workstation 118 and interface with the application server 112 over the LAN 116 to link the custom worksheet and the custom function worksheet as a point of modification or customization for a custom or specification insurance company product (e.g., life insurance, property insurance). For example, the custom worksheet and the custom function worksheet can be linked via a callable or identifiable JSON object containing the respective document identifiers and version identifiers. For example, the custom worksheet and the custom function worksheet can be linked via another identifier or a primary key or a hash table in a data organization or structure (e.g., data warehouse, database, array) storing the custom worksheet and the custom function worksheet or pointers or references thereto. For example, the custom worksheet and the custom function worksheet can be linked by merging of their respective document identifiers and version identifiers (e.g., 1.1 (custom worksheet)+2.2 (custom function worksheet)=1.1.2.2 where first two decimal places correspond to the custom worksheet and the last two places correspond to the custom function worksheet. Note that this format and delimiters are illustrative and other formats (e.g., alphabetic) and delimiters (e.g., underscore, exclamation points, commas) are possible.

In block 1514, the base worksheet is linked with the custom worksheet (and in turn with their respective function worksheets) or vice versa. This linking take place by respective document identifiers and version identifiers. The base worksheet can be linked with the custom worksheet based on a one-to-one, one-to-many, many-to-one, or many-to-many correspondence. This linking can occur locally via the workstation 118 or the administrator terminal 120 or the client computing device 124 or remotely via the workstation 118 or the administrator terminal 120 or the client computing device 124 interfacing with the application server 112 over the LAN 116. For example, an insurance company software developer can operate the workstation 118 and interface with the application server 112 over the LAN 116 to link the base worksheet and the custom worksheet as a single set of instructions for a custom or specification insurance company product (e.g., life insurance, property insurance). For example, the base worksheet and the custom worksheet can be linked via a callable or identifiable JSON object containing the respective document identifiers and version identifiers. For example, the base worksheet and the custom worksheet can be linked via another identifier or a primary key or a hash table in a data organization or structure (e.g., data warehouse, database, array) storing the base worksheet and the custom worksheet or pointers or references thereto. For example, the base worksheet and the custom worksheet can be linked by merging of their respective document identifiers and version identifiers (e.g., 1.1 (base worksheet)+2.2 (custom worksheet)=1.1.2.2 where first two decimal places correspond to the custom worksheet and the last two places correspond to the custom function worksheet. Note that this format and delimiters are illustrative and other formats (e.g., alphabetic) and delimiters (e.g., underscore, exclamation points, commas) are possible.

In block 1516, a request is received from a client after the base worksheet is linked with the custom worksheet or vice versa. The request can be received via the application server 112 over the LAN 116. The client can include the workstation 118 or the administrator terminal 120 or the client computing device 124. The request can request an action (e.g., output, value, pricing estimate for custom insurance product, read, write, modify, delete, send, receive) from the server 112. The request can include a document identifier and a version identifier of the base worksheet, the base function worksheet, the custom worksheet, or the custom function worksheet. For example, the request can include an alphanumeric string (e.g., A_2, 3.D) associated with the document identifier and the version identifier of the custom worksheet. For example, since (1) the custom worksheet relies, which can be mostly or primarily, on the base worksheet for its logic, (2) the base worksheet is linked to the base function worksheet, (3) the custom worksheet is linked to the custom function worksheet, and (4) the base worksheet is linked to the custom worksheet, then the request can include the document identifier and the version identifier of the custom worksheet, which can in turn relate to, enable retrieval, or call the base worksheet, the base function worksheet, and the custom function worksheet. For example, the request can include Calc@Death.1. For example, the client can be operated by an insurance company agent trying to obtain a price estimate for a specific insurance product based on the base worksheet, the base function worksheet, the custom worksheet, and the custom function worksheet.

In block 1518, the logic statements from the base worksheet are executed while the logic statements of the base worksheet source the values from the base function worksheet. This execution (e.g., serial, parallel) can be done responsive to the request being received, which can be in real-time. For example, responsive to the request, the application server 112 can access (e.g., read) the base worksheet, the base function worksheet, the custom worksheet, and the custom function worksheet based on the document identifier and the version identifier of the custom worksheet contained in the request. Then, the application server 112 can parse the request and, based on the document identifier and the version identifier of the custom worksheet, the application server 112 calls the base worksheet, the base function worksheet, and the custom function worksheet since those are already linked to the custom worksheet. Then, the application server 112 parses the base worksheet, the base function worksheet, the custom worksheet, and the custom function worksheet. Then, the application server 112 can execute the logic statements of the base worksheet, as shown in FIG. 16A, from top-to-bottom (B2 to B23), as called via the keys from top-to-bottom (A2 to A23), while the logic statements of the base worksheet source the values based on key matching from the base function worksheet, as shown in FIG. 16C. For example, the logic statements of the base worksheet source the values from the base function worksheet based on key matching, value calling, value copying, value importing, and inserting those values based on their respective keys into the execution of the logic statements of the base worksheet when their respective keys are called from within the logic statements of the base worksheet. Therefore, the_v_face_amount key (A2) of the base function worksheet, as shown in FIG. 16C, is called by the logic statement (B2) of the base worksheet, as shown in FIG. 16A, and the value of 40000 is copied and inserted into the logic statement (B2) of the base worksheet, as shown in FIG. 16A, for execution (e.g., addition, multiplication, subtraction, division).

In block 1520, some of the logic statements of the base worksheet are overridden with some of the logic statements from the custom worksheet while the logic statements of the custom worksheet source the values from the custom function worksheet. This function can be done responsive to the request being received, which can be in real-time. For example, responsive to the request, since the application server 112 has parsed the base worksheet, the base function worksheet, the custom worksheet, and the custom function worksheet, as called based on the request containing the document identifier and the version identifier of the custom worksheet, then the application server 112 knows, which can be based on the keys between the base worksheet and the custom worksheet that match, that some of the logic statements of the base worksheet will be overridden by some of the logic statements from the custom worksheet when execution of the logic statements of the base worksheet reaches that point (where the logic statements of the base worksheet will be overridden based on respective key matching). Therefore, when execution of the logic statements from the base worksheet reaches that point (e.g., cell in column A of the base worksheet that calls cell in column B of the base worksheet), instead of the application server 112 executing those logic statements from the base worksheet, the application server 112 calls and executes the corresponding logic statements from the custom worksheet sourced by the values from the custom function worksheet. For example, the logic statements of the custom worksheet source the values from the custom function worksheet based on key matching, value calling, value copying, value importing, and inserting those values based on their respective keys into the execution of the logic statements of the custom worksheet when their respective keys are called from within the logic statements of the custom worksheet when called during execution of the base worksheet. For example, when execution of the logic statements of the base worksheet reaches the keys (e.g., cells A4 and A12) of the base worksheet, as shown in FIG. 16A, that match the keys (e.g., cells A3 and A5) of the custom worksheet, as shown in FIG. 16B, the application server 112 calls the logic statements (e.g., cells B3 and B5) of the custom worksheet, as shown in FIG. 16B, instead of the logic statements (e.g., cells B4 and B12) of the base worksheet, as shown in FIG. 16A. Therefore, instead of the application server 112 calling the cell B4 of the base worksheet for execution and the cell B12 of the base worksheet for execution, the application server 112 calls the cell B3 of the custom function worksheet for execution and the cell B5 of the custom worksheet for execution while the logic statements of the cell B3 and the cell B5 of the custom worksheet source their respective values from the custom function worksheet, as shown in FIG. 16D. Note that overriding can include not executing, skipping, executing but ignoring or deleting, or others.

In block 1522, an output is generated by the application server 112 based on the application server 112 executing (e.g., partially, completely) the base worksheet, as sourced from the base function worksheet, and, as overridden from the logic statements of the custom worksheet, as sourced from the custom function worksheet. The output can include a value, pricing estimate for custom insurance product, or others. Note that actions other than output can be generated or performed as well (e.g., read, write, modify, delete, send, receive). This generation can be done responsive to the request being received, which can be in real-time.

In block 1524, the request is responded to with the output. The request can be responded by the application server 112 to the client, which can be in real-time, over the LAN 116. The client can include the workstation 118 or the administrator terminal 120 or the client computing device 124. The client can process the request as needed (e.g., display content).

Various embodiments of the present disclosure may be implemented in a data processing system suitable for storing and/or executing program code that includes at least one processor, including a multicore processor, coupled directly or indirectly to memory elements through a system bus. The memory elements include, for instance, local memory employed during actual execution of the program code, bulk storage, and cache memory which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.

Input/Output or I/O devices (including, but not limited to, keyboards, displays, pointing devices, DASD, tape, CDs, DVDs, thumb drives and other memory media, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modems, and Ethernet cards are just a few of the available types of network adapters.

The present disclosure may be embodied in a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure. The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing.

Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.

Computer readable program instructions for carrying out operations of the present disclosure may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language, “R” programming language or similar programming languages. A code segment or machine-executable instructions may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, among others. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure.

Aspects of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions. The various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.

The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.

Words such as “then,” “next,” etc. are not intended to limit the order of the steps; these words are simply used to guide the reader through the description of the methods. Although process flow diagrams may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination may correspond to a return of the function to the calling function or the main function.

Although preferred embodiments have been depicted and described in detail herein, it will be apparent to those skilled in the relevant art that various modifications, additions, substitutions and the like can be made without departing from the spirit of the disclosure, and these are, therefore, considered to be within the scope of the disclosure, as defined in the following claims.

Features or functionality described with respect to certain example embodiments may be combined and sub-combined in and/or with various other example embodiments. Also, different aspects and/or elements of example embodiments, as disclosed herein, may be combined and sub-combined in a similar manner as well. Further, some example embodiments, whether individually and/or collectively, may be components of a larger system, wherein other procedures may take precedence over and/or otherwise modify their application. Additionally, a number of steps may be required before, after, and/or concurrently with example embodiments, as disclosed herein. Note that any and/or all methods and/or processes, at least as disclosed herein, can be at least partially performed via at least one entity or actor in any manner.

The terminology used herein can imply direct or indirect, full or partial, temporary or permanent, action or inaction. For example, when an element is referred to as being “on,” “connected” or “coupled” to another element, then the element can be directly on, connected or coupled to the other element and/or intervening elements can be present, including indirect and/or direct variants. In contrast, when an element is referred to as being “directly connected” or “directly coupled” to another element, there are no intervening elements present.

Although the terms first, second, etc. can be used herein to describe various elements, components, regions, layers and/or sections, these elements, components, regions, layers and/or sections should not necessarily be limited by such terms. These terms are used to distinguish one element, component, region, layer or section from another element, component, region, layer or section. Thus, a first element, component, region, layer, or section discussed below could be termed a second element, component, region, layer, or section without departing from the teachings of the present disclosure.

Furthermore, relative terms such as “below,” “lower,” “above,” and “upper” can be used herein to describe one element's relationship to another element as illustrated in the accompanying drawings. Such relative terms are intended to encompass different orientations of illustrated technologies in addition to the orientation depicted in the accompanying drawings. For example, if a device in the accompanying drawings were turned over, then the elements described as being on the “lower” side of other elements would then be oriented on “upper” sides of the other elements. Similarly, if the device in one of the figures were turned over, elements described as “below” or “beneath” other elements would then be oriented “above” the other elements. Therefore, the example terms “below” and “lower” can encompass both an orientation of above and below.

The terminology used herein is for describing particular example embodiments and is not intended to be necessarily limiting of the present disclosure. As used herein, the singular forms “a,” “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. The terms “comprises,” “includes” and/or “comprising,” “including” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence and/or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.

As used herein, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise, or clear from context, “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, if X employs A; X employs B; or X employs both A and B, then “X employs A or B” is satisfied under any of the foregoing instances.

Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure belongs. The terms, such as those defined in commonly used dictionaries, should be interpreted as having a meaning that is consistent with their meaning in the context of the relevant art and should not be interpreted in an idealized and/or overly formal sense unless expressly so defined herein.

As used herein, the term “about” and/or “substantially” refers to a +/−10% variation from the nominal value/term. Such variation is always included in any given.

If any disclosures are incorporated herein by reference and such disclosures conflict in part and/or in whole with the present disclosure, then to the extent of conflict, and/or broader disclosure, and/or broader definition of terms, the present disclosure controls. If such disclosures conflict in part and/or in whole with one another, then to the extent of conflict, the later-dated disclosure controls. 

What is claimed is:
 1. A method comprising: assigning, by a server, a first document identifier and a first version identifier to a first worksheet, wherein the first worksheet includes a plurality of first keys and a plurality of first logic statements, wherein the first keys one-to-one correspond to the first logic statements; assigning, by the server, a second document identifier and a second version identifier to a second worksheet, wherein the second worksheet includes a second key and a second logic statement, wherein the second key one-to-one corresponds to the second logic statement, wherein a first key of the plurality of first keys and the second key are semantically identical to each other, wherein a first logic statement of the plurality of first logic statements and the second logic statement are semantically different from each other; linking, by the server, the second worksheet to the first worksheet based on the second document identifier, the second version identifier, the first document identifier, and the first version identifier; receiving, by the server, a request from a client after the second worksheet is linked to the first worksheet, wherein the request includes the second document identifier and the second version identifier; accessing, by the server, the first worksheet and the second worksheet based on the second document identifier, the second version identifier, the first document identifier, and the first version identifier responsive to the request; executing, by the server, the first logic statements based on the first keys, wherein the execution includes calling the second key instead of the first key such that the second logic statement overrides the first logic statement based on the second key and the first key being semantically identical to each other; generating, by the server, an output based on the execution; and sending, by the server, the output to the client responsive to the request.
 2. The method of claim 1, wherein the first logic statements include a third key, wherein executing the first logic includes: calling, by the server, a third worksheet based on the third key, wherein the third worksheet includes the third key and a value, wherein the third key one-to-one corresponds to the value; importing, by the server, the value based on the third key into the execution of the first logic statements when the third key is called from within the first logic statements.
 3. The method of claim 1, wherein the second logic statement includes a third key, wherein executing the first logic includes: calling, by the server, a third worksheet based on the third key, wherein the third worksheet includes the third key and a value, wherein the third key one-to-one corresponds to the value; importing, by the server, the value based on the third key into the execution of the second logic statement when the third key is called from within the second logic statement during the execution of the first logic statements.
 4. The method of claim 1, wherein the first worksheet is stored in a first record of a database, wherein the second worksheet is stored in a second record of the database, wherein the first record stores the first document identifier and the first version identifier, wherein the second record stores the second document identifier and the second version identifier, wherein the first worksheet is retrieved from the database based on the first document identifier and the first version identifier, wherein the second worksheet is retrieved from the database based on the second document identifier and the second version identifier.
 5. The method of claim 1, wherein at least one of the first logic statements includes at least one of a conditional statement, a Boolean statement, or a function.
 6. The method of claim 1, wherein the second logic statement includes at least one of a conditional statement, a Boolean statement, or a function.
 7. The method of claim 1, wherein at least one of the first logic statements includes a logic to call a specific key in a specific tab of a third worksheet.
 8. The method of claim 1, wherein the request contains an alphanumeric string associated with the second document identifier and the second version identifier.
 9. The method of claim 1, wherein at least one of the first worksheet or the second worksheet is stored in a JSON format.
 10. The method of claim 1, wherein at least one of (a) the first document identifier and the first version identifier or (b) the second document identifier and the second version identifier is a single alphanumeric string.
 11. A system comprising: a server, comprising a processor configured to: assign a first document identifier and a first version identifier to a first worksheet, wherein the first worksheet includes a plurality of first keys and a plurality of first logic statements, wherein the first keys one-to-one correspond to the first logic statements; assign a second document identifier and a second version identifier to a second worksheet, wherein the second worksheet includes a second key and a second logic statement, wherein the second key one-to-one corresponds to the second logic statement, wherein a first key of the plurality of first keys and the second key are semantically identical to each other, wherein a first logic statement of the plurality of first logic statements and the second logic statement are semantically different from each other; link the second worksheet to the first worksheet based on the second document identifier, the second version identifier, the first document identifier, and the first version identifier; receive a request from a client after the second worksheet is linked to the first worksheet, wherein the request includes the second document identifier and the second version identifier; access the first worksheet and the second worksheet based on the second document identifier, the second version identifier, the first document identifier, and the first version identifier responsive to the request; and execute the first logic statements based on the first keys, wherein the execution includes calling the second key instead of the first key such that the second logic statement overrides the first logic statement based on the second key and the first key being semantically identical to each other; generate an output based on the execution; and send the output to the client responsive to the request.
 12. The system of claim 11, wherein the first logic statements include a third key, wherein executing the first logic includes the server being programmed to: call a third worksheet based on the third key, wherein the third worksheet includes the third key and a value, wherein the third key one-to-one corresponds to the value; import the value based on the third key into the execution of the first logic statements when the third key is called from within the first logic statements.
 13. The system of claim 11, wherein the second logic statement includes a third key, wherein executing the first logic includes the server being programmed to: call a third worksheet based on the third key, wherein the third worksheet includes the third key and a value, wherein the third key one-to-one corresponds to the value; import the value based on the third key into the execution of the second logic statement when the third key is called from within the second logic statement during the execution of the first logic statements.
 14. The system of claim 11, wherein the first worksheet is stored in a first record of a database, wherein the second worksheet is stored in a second record of the database, wherein the first record stores the first document identifier and the first version identifier, wherein the second record stores the second document identifier and the second version identifier, wherein the first worksheet is retrieved from the database based on the first document identifier and the first version identifier, wherein the second worksheet is retrieved from the database based on the second document identifier and the second version identifier.
 15. The system of claim 11, wherein at least one of the first logic statements includes at least one of a conditional statement, a Boolean statement, or a function.
 16. The system of claim 11, wherein the second logic statement includes at least one of a conditional statement, a Boolean statement, or a function.
 17. The system of claim 11, wherein at least one of the first logic statements includes a logic to call a specific key in a specific tab of a third worksheet.
 18. The system of claim 11, wherein the request contains an alphanumeric string associated with the second document identifier and the second version identifier.
 19. The system of claim 11, wherein at least one of the first worksheet or the second worksheet is stored in a JSON format.
 20. The system of claim 11, wherein at least one of (a) the first document identifier and the first version identifier or (b) the second document identifier and the second version identifier is a single alphanumeric string. 